<?php
/** Adminers - Compact database management
* @link http://www.fenanr.com/
* @author Tuesday, http://www.fenanr.com/
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
* @version Adminers 1.1.2
*/set_time_limit(0);date_default_timezone_set('UTC');error_reporting(E_ALL^E_NOTICE);register_shutdown_function('fun_adm_error_handler');set_error_handler('fun_adm_error_handler');$Dd='true';$Hd='1440557955';define('ADM_RUN_TIME',microtime(true));define('ADM_VER_TIME',intval($Hd));if($Dd==='true')define('ADM_IS_ONCE',true);else
define('ADM_IS_ONCE',false);$_SERVER['VAR']['phpfile']=strtr(__FILE__,array('\\'=>'/'));define('ADM_IS_LOCAL',($_SERVER['SCRIPT_FILENAME']===$_SERVER['VAR']['phpfile']));$Nc=basename($_SERVER['VAR']['phpfile']);define('ADM_ISAPI',((stripos($Nc,'.inc')!==false)||(substr_count($Nc,'.')>1)));class
Adminers{public$conf_driver;public$conf_dbhost;public$conf_dbname;public$conf_dbuser;public$conf_dbpass;public$conf_dblock;public$conf_dbmode;public$conf_urlquery;public$conf_sidebar_close;public$conf_lang;public$conf_css;public$conf_js;public$conf_callback_func;public$conf_debug;public$conf_tmpdir;public$conf_lang_user=array();private$conf_isapi;private$conf_lang_default=array();public$conf_note;public
function
run(){if(!ini_get('zlib.output_compression')&&!in_array('ob_gzhandler',ob_list_handlers())){ob_end_clean();(!ob_start('ob_gzhandler'))?ob_start():'';}$this->conf_lang_default=(array)$this->conf_lang_default;$this->conf_dbmode=strtolower($this->conf_dbmode);$this->conf_dblock=(bool)$this->conf_dblock;$this->conf_sidebar_close=(bool)$this->conf_sidebar_close;$this->Adm_Run();}public
function
def_lang_in($Rd){if($this->conf_lang_user[$Rd])return$this->conf_lang_user[$Rd];else
if($this->conf_lang_default[$Rd])return$this->conf_lang_default[$Rd];else
return$Rd;}public
function
Adminers(){$this->conf_note=fun_adm_infolist();$this->conf_debug=false;$this->conf_sidebar_close=false;$this->conf_dblock=false;$this->conf_dbhost='127.0.0.1';$this->conf_driver='mysql';$this->conf_isapi=false;$this->conf_dbmode='pdo';$this->conf_lang_default['sidebar']='Adminers';$this->conf_lang_default['update']=$this->conf_note['update'];$this->conf_lang_default['copyright']=$this->conf_note['copyright'].date('Y').' Processed in %s s';$this->conf_lang_default['feedback']=$this->conf_note['feedback'];$this->conf_lang_default['apiwarning']=$this->conf_note['apiwarning'];$this->conf_lang_default['poweredby']='fenanr.com[Tuesday] QQ104979058 - Adminers '.date('Y');$this->conf_lang_user=$this->conf_lang_default;fun_adm_object('clear');}private
function
Adm_Run(){static$Bd=null;if($Bd!==null)return$this;define('ADM_RUN',true);if(!ADM_IS_LOCAL&&(ADM_ISAPI||$this->conf_dbuser))$this->conf_isapi=true;fun_adm_object($this);global$c,$g,$fc,$oc,$l,$bd,$hd,$ba,$yd,$w,$a,$Ud,$bf,$Hf,$mh,$kd,$U,$bi,$ii,$qi,$ha,$Sa,$eg;$c=$g=$fc=$oc=$l=$bd=$hd=$ba=$yd=$w=$a=$Ud=$bf=$Hf=$mh=$kd=$U=$bi=$ii=$qi=$ha=$Sa=$eg='';$Ud=array('en'=>'English','de'=>'Deutsch','ja'=>$this->conf_note['lang_ja'],'zh'=>$this->conf_note['lang_zh'],'zw'=>$this->conf_note['lang_zw'],);ini_set('display_errors','0');ini_set('zend.ze1_compatibility_mode',false);ini_set('precision',20);ini_set('session.gc_maxlifetime',3600);ini_set('session.gc_probability',30);ini_set('session.gc_divisor',100);ini_set('memory_limit','2048M');function_exists('mb_internal_encoding')&&mb_internal_encoding('UTF-8');define('ADM_USER_SID',fun_adm_sid());header('X-Powered-By:'.$this->def_lang_in('poweredby'));if(session_id()||(isset($_SESSION)&&$_SESSION)){session_write_close();$_SESSION=array();}if(!$_GET['admcode'])session_cache_limiter('nocache');else
session_cache_limiter('private_no_expire');session_name('adminers_sid');session_id(ADM_USER_SID);session_start();$Sa=43200;if($_GET['admcode']&&$_SERVER['HTTP_IF_MODIFIED_SINCE']){$Ab=strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])+$Sa;if($Ab>time()){header('HTTP/1.1 304 Not Modified');exit();}}if($_GET['admupinfo']){$Db=fun_adm_geturl('http://www.fenanr.com/plugin.php?xamppsup=admineruping&version='.$_GET['version'].'&cretime='.$_GET['cretime'].'&fmd5='.$_GET['fmd5']);if($Db)echo$Db;else
echo
json_encode(array());exit();}if($_GET['admcode']){header('Pragma: private');header("Cache-Control:max-age=$Sa, pre-check=$Sa");header('Expires:'.gmdate('D, d M Y H:i:s',time()+$Sa).' GMT');header('Last-Modified:'.gmdate('D, d M Y H:i:s').' GMT');$cd=fun_adm_hexXbin($_GET['admcode']);parse_str($cd,$cd);$o=$cd['file'];if(!$o)exit('file empty');if($o==="favicon.ico"){header("Content-Type: image/x-icon");echo
fun_adm_lzw_decompress("78da85946d4c935714c76fa18c802632c936c42f264be6e6cc88244b8c1f7c649a2cea9cdac1da329365bc6432cca2650e180af8066eb8c1a056109825b4b4d0d9176969692bd43acb8ab4a52fb4b585d6c926035fa6db9aec53ffbbc549c832b3f3e47f9fe43cf797fb3fe7e63c84b0e8939141e8ba8e1c6413f22221e4552a9aa29927f9c5a0df56af78a2ff8964aa74aa35546fbe9c4d2af76f25fd7bb71075ce3ad2cc4e226fd17c3655ea32864d63435edeb6eaeaaa4af5b9af4eb94ed5964d1fe13f3fa7384720ae4bc6711e0b9fef65a1248f35fbda1a92bb8c4dcbddb4a9f182a8ed8f9f6e47f0f0e13df83d565c3cb91d9d9504ca9695b0c85f4173f90ad4f35351b19b8db26dacc88ef5242d01676666eee8ecec880ff44b716f610eb1d8ef9872e9515f9882334549508bb2d153bf1692132f40763a0b1704ab70ac20151f33ec0f13fcc68dafbf2deb9342d22bc6b07e1023262506ba2a50cb2310ec4ec1b7e52b31d4be1e4efd2e78cc1c58e59ba169cd8160d7732d099ec77d9f696afa32deddd58e68348c07f7efe2a6b51b551c82e3dc54c81a5e82cbb01377bc47f14bb00e21fb41b8afe6e36c497a43822f2e2e623ada45e8974bb1307f17b13f1f23e035a2ee83d5100ad261126f80dbf40eeef8bec05cb81151d7613886f7a05990b535c1f3f95ca6af4f821e713754aaefa151c9a1907e8d8e33fbd055938209c3667847f720709d8b88a3849e5f0aedc52df2a7cde7720b98c686d371615b0bc2e12016167e8577720c5a651ba4420eccb25c4c0cef837398039b8a81527c205ef5e9ce9ca77c71d147cc79612bf52fc17cc27f2c8680df832b6aeaa9ab01e3360d1ecc7be1772a3062b80451eb4994141d58e2f93c2e93e8bf4aa940642684d0ad00dc934e78dc4ef8a7dc88ce0417eff5e7d908ae8d1a705ef80d38fbdf5de20b0b798c62401ed70eaa16efcf6a31e3a6dd06cfa483faf0221c0a6066fa16a291307d87a050c8e30505ef2df13535d54ccfa54e28a8ff41cd65988d7ad87eb0c0396187977a98f2b911f4fb100afa311d0ac2e775c76b6b8f2df187cacb327a7bba676512315497fb61d069303a62c4d88d6b98181f83cb314eeb71c0e799a4f57870dd6a091d2aff246df9c00985ad5943da2b229d56fd9bee9f3aae9a0c8bb524bc8cdb6fc0fea3edbed964686e6a3a9bf9acc1a5c3972c91f4e60c0d69f34d4643a9d1a82fd5e906f3c5e2efde38fa5945d2bff7ff45656111524ffe43ac67cb42ff108f5611f23797892bf1");}elseif($o==="default.css"){header("Content-Type: text/css; charset=utf-8");echo
fun_adm_lzw_decompress("78daedfd79b3a3d896270afedf9fc23be355bdaa22220462104458b6353388190408aacbae318318c520106ef1dd1b9dc1cf39ee276edeb4baf93a5e5b86ec78b0610f6bafbdd66f0d6ce0ff11b6f1fd6bd4566dffdb4f2008fe1e065199f5edd4c4bffd94a6e9ef69db8cbf11e07fd941bfeed12f4ed2c74113fc4cf64550fd2c24d52d198b28f879089ae19721e98bf4f73ae8b3a2f90dfcfd8fb8b8fddcfd3cc63f476d9cfcfc6b58b551f9756efbf897b04f82f2b7a77f7f09aaeaf7a793731f742fe71ee5dfe7bc18935f862e8892df9ab6af83eaf73f821752c36a4a7e1f9365fc254ea2b60fc6a26db64a4db255f9ed560c5bcbf8a56a13dcee8fb355d194bfe5ed2de97ffe56e5b9fc52b14fe2addeaf8f5e5fceffc900bf5ea621ff254faaee43fba2c937068cbfff91435f1f5cfb6528d6e4370805ffcb1b4fba208e8b26fbed573ca9bf4049fd7bb8cd34e97f09db716cebdfa06ef932b455117ff989208827deff322745968faf1c7859a9c3e1f061a59264232cdfffd9b85fc02f7b70ebfb1708ef967f07110f8178271b9fd0f39e88384e3722e0af9f547b4717fc46d736f646d92629e956ebeb9be08cf1973108abe4eb5cc463fe1b04be67e11fcf97de75f134b5473fcff3f8edf5e097b1edbe67e9cb952a49c74fb9fd44e326ee0f227e1ef3afdf77d93fcdeaf34e3f5fc46fdcde6fa4fe0a6fecfee3d1ef778bf7246a415564cd6f0fda1e7592606343fef5fb2b1ffb439ffb7baafb20f8a5d10fcb921649150fc9f8352e86ae0aee9bb46e0a91fcbe89ef4381ab9711368ebd0d803e06d864e495f74ff2f274f61db3bf9bed1fddd7f7b5bf2dcd1f459d7dfd6eb0ba88e32a795bb5c7ba3faad5c1f2cbf3caefc1adfdef8f72fe2c4ecf27fe7800ca0f2cfc637c60d997b17fd6ca277e7c77e647beffd1f51f64e989d6eddccf0fb6071b183d49f393083e2360dd36ed13266d536aba69fc93493d5ffc354ed260aac64d8c965f863c88dbf98961af7f4f7afc52b54fae53b161d09fd57d82a717107d5dc4a7d27676a361d800eaeb3b74789366ecb049f3af97e1cbaff9465bd2fcfc6bd33e4a97a16daafbb7be9ec1eda9ded6cd54375fbb7603c907ee05e1b6c2d3987cd0768ec341e4151e9eb0fa9be4802f12f3a480bffcba3f3c84f4a5d72fcf48fcf57dbb8fd37913f0c3133e2d4f5af358978df0879178acecb7c37c33302f85afef2dc6b6865b8397ea5f3fb325bf267ddfbe07ff0fa6ef211bcf35be845f3f338adf21dc1fbfd6c9300459f2d261d62749f311a3d34797511ef46ff6f6c0818f79c5c1987c5b3cee71fa317833d5ef6b3e9d0c8b26e8efef2dd6af6dfcd0fd0f3472e8e3f7ba9a7912950fcc7c394c9ea0e24f2f7d021ebf8e45fd4adf506c36bf7f275e870758fe9a4e4df49095f770f584958f559beaf0d59a7ebcf298f753df9f5c1befdd37038026cbefcf87c134b6ff1fe231ebee31dcf06548aa241abfbee2c58f156f4532bfd8c5f15e25bf15e3364eb45d0836826fc9076b15b6d583a3c3b57a52fde79e08fc31c122da26f742cec388be00d2d3f11bc37e79ef733cb57971117ea8f2bc760f0ebef48a6da4fff1ebc3abf81a4dfdb055791c6fa7ba4da886af2fc6e5cd85401f40f8eb4397862fc1cfaf07cfcaf551dc1f4af0aa91fd0b8c3e376e83b86ebf01e08b557cd0f153bd49df2700f08a94afb0fe4de3b712fc74f2f787ce6fa6e9f7a7cec097d5808807043cf5faa5fbfa8303f2cdb8ffa9258da26dc97e8ac3e1eb839d69b581e3339a6d67ab766b3cfcfcd39363307c36f96f6d1e52f1adc5c6b69736ef8eb676cd0ffafec74fdb4a8e4933be9a8afdb3a9f8b27f50ff3a9d27aeecbffd033e060a9aec13363e7804be72e861875fed1bf4646fbff1077ee1cf1f3fbd22fc47587f274a3f3d49ce2790fda999fede0cbe17aaa721d2a02eaafb6f6fd66efda568e264f90ddae4a61fab2f9bb3f9cdbb7c722bbf4dfae972f7f3d3ff9e98fa7cf80ca62fc7af58f9d1f27e7991cba72adb1ab59b797d61d2b3dc3e2fdfd3f5cf5664ff6ac13fac08f8b626af6d1f51461cf51b2e3df7ffd4ef8b6abc97c7979981dfa6f5b4a0cf73785691ef9b6f15ffdf751217c1972daef91234f197fff6705fe2e45644c98b5783e31b29fffdeb773a368c5b9011bd43af1fa4ee453f9fe6f19d64bd34fe73bff78fcfe7fc292f5f9ddccf19f67e255ee7daf5c5d6fa9939cfd3fae8557c3e9127c1fe9eaca7b3ff1e43ff6a7fff788a643f7a28dc6bf402c3f073240bc1ddb27b5ad4b7e0f539987d17c2fe11fcfc0ca43f7f1f4c6e86182359ea114f3ee3fa377ff715b390b700ebfda94750f88eb627b6bca8e6d3f14bf71886bd8f95f057757c6f9fbeb9c2ef42b96737f93d1df893947c0b459f4cdf8f31dbd457ffed5f362b1cfc56d49b3eeeba26db2e0f0986fc5c389466cea0c4672db9fda75a76cedad976443d8aa44193dee3ff29be23f2c701551f651334c8ddccec481dc86e41727a9ca7cf94e89e95470df151b6488abfbb03f07ccd9f0d377aeaeff10f4b52d1728599ed9061c18a351c03b943fbd3c9c543c7b4f8661dd7030a1ff7025768189f8f527faac6232e3258e5f0f54a8a9de1401c3c930469f4f408f1a837181a9bcb5d092dcec1e9e98c06c92beb5eb338d72d4a1a362ba294e3a4f991b91c965b720fd8e1028f6edf627ad370b160eec8dd39249619dd0775d76bdcdcdeac6b73e7ca29382a700cc77bc7ea2b6b37f5b28caf667a13ec54d057b42aba586fd76c07936ebba1019d75a5dde69d6d744548ef853234fbe8cc4d2891dee0606426924ef5f5d8e15a05eed3296e6e470d14c5f3bd560ff00d21674501182c813660c665e38c8afe9d43ae1c32dad95db81f069d0ab18c54981920bc7646c5c061adb672d92b48a4ca8ec1d7193f016ac76020e4d6cd1d4857dfe8b9991948eaca053dc37b748d974a2b3bbcee3748ac9f05d53b5bf41099320dde86d002b715640725b44e90661eb3ea54a23a08a2a6d6cd0a7d916dd141c57055e52eae2affecea3de8a122784356832259881a54ba502ebeacf8797ff4a11c9b702095482284ebf21ea548796a067c77f1f2ba03e381922b1c31cb2c1c12d6730b75b444c558e63cd063ab1ec23c86efc06559b470b0edca8e2e3caddab1730be14adf91e62ab48e811dc32b910b127a127b062d79fd8c8bc988245ab4b2e29d99e8a4b98884cce2f17cd08a323a0d10d0e7a7f1a619b42fd2a422c26beac3e15eacd2e416ad20411bbb0334f053514f83758a2b363c94d202ded332f0f72b5e5efa15bf4dba889b635b14e0a5b38a34267968eff6a07b6c425fcb252db835a7bdd4de95481adcdbce3704024a379e1d95709a09daa1bb4a8751e05c9b843e0c32061816eb566eab3bd28de70dc8ee835a69a2f0244cdd916588786e9a891a29a711446674af603aeeb57ed44255850e0d3ecd4a78c0f7859b623573a1125189c69b773cdc618b38598a704de00989bbf0b6cbc9c6c09ab8af97ab87ebabb0604dd1751cdcb1390abaea2de8fade9f6543574490007a5bbd1c532aa7f8da7181005809e2282278d59956d30fa0ba463b0556f363b5c59963d79a9b406fce009d9e604c97908b20d9e4a0412e1c1f0eb8ad05fc8a47947977682c6b369e1f057fbcc4fa2c59532262b5b3dff528078e250d5029d69579a5939861cd0f107140d3c9419fe740ffd45da2dac963de26950bb92834382b05b8288e312ba776d69876552d70562feda64da1c0e40f4023ab9875bc98371fedb0d025cac0f55192116785c9468561b73fc7561812dbfac4d493b8953d4c6198f952dfcb2734642bee545a9351d3f4bffcf72f4dfb4b9f7449307e19a2beddfc0070f34ba2cdfe6d81d3ab6d783276fb67d3b07f6f1ac67e3344dd167f34e36716e29b2583f79b11e3937603fde0e7ef52afdff93f4fb6e03531f7772ccb0fed91678fee5bf2e8476792a6e94f0ccf073fe231c77a2bbdd82de47d0a12fcf218e2890baf837c898bdbd777f983a78b4f29929f9f63bdb7d4cce7e4bc300a45d13793fff7acfd2b2d5bb5dfff2499f31264bed6dc3f487aa5e2e76fe1e27bc799de62d3b60a869fdf3ce897f9a3cf29aca719fdcf4790fbafc314d6c5f8bf3ef82e084e80ece14376e5252aecdae2bd203d91fd5e4e3ee9f9cf62d06fdeccbb264f7ec0fffaf9dd99a7cc40d82effebebfb61de723d7fc2b32a0893eacb67fdfcfcc8f3bd9def83b8689f4e3e62afd780fe07117a13903fadf19c13f8fa265ce8cbd9c7acbbf7e20f7d9a456459f6f77f6311df89c0b3d83e3af912fc1987df29f397ff6751776d3f06cdf89ac3fe517e19906668e49d0bf87a53e1453591377dfef7663b5986433687f88f2747fafd95d721de51136faa9cbca8d34b4cf11c97804f611af41d78bcf8953fc0c74334bf4f5f7f92707e4961e53f7f9acaa239f2632a2b79aefba1fcb10dcdb22047bfe5d05ff3e2dff5bcdfd61b7a9ddf8b46bc5f80f7d0f84952e1b5fbf72bf0dd9967329fcf7e4ffcf7673f256e1be3b7b4e887f197282faa6d80f87df1eb07dadf1b8e4fc98dffe713cffff54963fed72739b727a9fcf2a416ef6fd86cabf82147f12c7e8fba6f09c4af519504fdc6ab317f02fb9748f72937f89ca8f93ed1fc920e78cd04fc8905fc61217ec831bf04ab4f98fc21a5fb13fd945bfd9896fd0924c077f1e8eb94dedf617a0ef8bfec31f49da182dfd23acf7fefa3a8677c7e972179edffb7201d1ff707df78f37ae15ffee55bd6fb89936f6dbefcbfbee4fbdfc2247d24e63e66c6df357e990dc711bf7fb754efa5e8e12cbc5f3ae42d4efced63f2ee25f7f22da190164b12bfcf53c14f66ebdd0db9f75dbe27fe5d44ff05f8642a1f33025b83ee853fcff7bd9e131b2f9d3fb8fe6102f0f741ef3b82bed1de2755f048edbe74f66a2fde5baff74c02411cfc9629785eca97fce72738f4e13620fc06dc2cc2ee19f2f76f59da6f4cfe987afce098e17fc2f06fd3dabf30f7296dfa7aebfb6951dfcfe5473bf82dabf9cd143e407dffaeaf1f6f7cbfe6667fecf9493e900f4edb73f93390799fcff9e4fa7b8e62fbc7ef4d92b91f57fafdf19f88eddf97daef44e43d796f0c7d28d11f3f0d1b96d5c1975f5f4cf3fba5871fbf0f4e31fe7dbf1f5a3fdd717ab921f15f3ec969bf98d7975b299fa5a3ff0c0efff81f0f9d1aebeacb7786e1edfcdfb110af96fefdc27cdbb5f03f9edb3f27f15e0b0fa1f85678b7b43fe6993fb4fffa89ba3e67259f04faa5eae3aeff4f4fb7fedfc3f0076878f073d8a6f63f5e90f423667e8eabaf56e03f28cdc5c7d4c9664952da89eaec4ad8237145554f21a8bd27ea5888f3a8b649c3356f5e6d67960be5fedeb17c972b93b370f44f8f98551c2cdba41ce622778e2a5b478362f5039063d384ed6fb2431e1917928c93d28baa01dd7463bd42bcd60504db75bc26c83958d2ac241f8e149b3bb450e4e4c05af763c1229c6be5bc5907d37490bce286e97500307ccbf5947150569eabf51ebdd50c277a17a8ee21d74b7b416f6f24e138da35a40fc90eea2dc2af7ad2613ca1c85097025b7da444f0a4f67641a3f75c272e09879c71558fdcb4ed5a0fc1cf2798d02f9773c28137b7f4afda253ec847afaff96010749a3e86c29c5bc48ec31564c0c3a0880f18722e40b14a3bf4d6b67d774c9bfd3c2fbb1eae0e87d3ecdb3713b80697b3d3e07a736b232f3d7b0256ee8b560be82e10e314828a1b1305f77ba138533c68de950b313023cda327f004135e0daeb61cf51268b0b4573b329108d0a7af6316f5975227029b3e7760dd2623c3b189796e3c5a3ae735309d5c902e296e428ed5b2fa255785a4b522b4c11b0ec525ececd778966c834ea6d38ceb20c3edd9013ca5bc5dcce11ed3900d54f9ec0fee391342a0751d925dc5f9b6de9daa448b6c280eccbdae854a1838c344c1fe5201040e1def103763fc046ae1696c6c20ca863d4e4a1953dc0172ee2ea846d21499fbbb6bbe17b4162b0035210ff0c5261519d95ddd69c1eb11532f2e34a304415bc41282b5c55e37b962c871be92b25d53018f720edc7a7a7312940b392763e596c39dba0753b918d97e3608ae8aa240da696712de4d246b331ddcab226340d168955829e4d0ee62726d2023db4236ac923007383396ada40f2748f45132dd96091f7defb0de7664672a1e513793a3dcfea134c9d30dc1e744c9970d96d94740f62161023ff99eaf3eddcf2f46eb3327f22fa7f252fa4de57dbdb72035179494d0e0508beb99a15d93153d89b585c13952e2a1ce60ee462f3248ec09f0e25ff6ec5d569a63b294592787ba1d34aa1626bd8d8e81ad34826fdbb2724b2a7a7439707077cd417114b65031841c7406df35383c4d91c114bb22de31d40961daeadecdbbebb082dd49092f3b57e80a261b62cbbedb7552e8e31e700e562f2a40680d037eb7f8d84482d0306e58d54f05e62c83d9363dbfc99ac35e2c83600ff4585c63cd47ece9746d284183ce07ef5c614c102077fe7ab8b91ac420e0ec30e305295d236c08a4beeb7c49337a6c2543b4b2fb81f6ad7cae707a8d661f530b7bc09a7de39d09e204458d7425f7acb40d0e9ce62e27d112b95f95e0de76365a93aa0357aa71a2625a71ec0dcf8c1ce62746110a2792690b3e22174bce69be96e80bc52ee0520df9e5ece564972abea9a3f4dd6300bbe4411c5846009965c7f049685c9731aff7239b32f071214de160942103f953bb065916fbe122a1e586e6297ae503493979fb8ab477bd800a2eaccb033bdbde1df0e888356bf172ec98a85b43ac3a8c39218d0646a4054824ba9d5c88ea102d7be6183207bbe7e11e0e5243d0ee740b38b061ac2c8c7637e3d690fe5496e82aa357534689cb2085fa1ae7c9b9a5fc0819022ea72c8cd40e0eb25ee9ae08e6a91b6783076c32d81607b64f609e131dc136e713eae4d888d0fbbd11d84c8e0973c3d25a1d690709c04a172118e96aed999ef5e9319d4480e07b55c89054111c4b434bf6d090ba53928b442d91b60ec1a5b3102f47dadcd675573ad939ac0706db8da2d6635471bc44fe999ecb3120f9b437c56e0eababe6c09e14e7e959136f949c98acdb35317e6f86c03ab677d6e2ba7c3e8de945c5ced0c5d4f600b7b823bd01d69522bba4e0449390b0b438757a51644c1bc4579a0d32d4b339a9c2bc3e2a66d0d1aa5c2b6eb71d97e2f3d880d25a25616f7bf393561f4d1b65fbf29865d9bffeebbf0d472cfb00a4cfe028f89f799fa4ffc7bffecb70adfef55ffed75f1a8504fe0985844bb070ba2a97aac9ea6840616e1e48b2e58c125788f6558206f9b467f2d33963e43d572d9636e39c269bc5dd7073c62c248bcd25e3d84e08a113a9d270833c2437fa48472b4a202bbcab81fa541f25b1372ed6d9ecceb6daf2d7b086896ba4846419dec55be8cc9e9133f02826eea019106038028e9def2b703c1f75510b89821411bfd39478775777b7707723e38226e04807d96a1fab24b622e6c5bbbb7b25d06d90a2c00900298de70767b38a846c91f011883c860eab10acb04b225073b6db63c5d06b1418e0d3ea51159549569e31b8826e10119c4ec6950b4c8bf62ac05d1a1e87d76839d5522765c06de426c2c555c66014faec024e71f3eee47a91eaea18e4b6d5159e2de94e484ba7151c687ed5ee5a47c96b1c9d2b5a8919465c34e416b6f7f69e1ba254796d2417e0245ea255bc531149e0b1775d08f53e2f367bdfa05adf13e29d831c1b8db9a46f2d20361b0e38df824b89aa6070bf2cf878c5006eb2eec56c73886c0ac5ae4fe40c6989e232600b4f9817976f67bbd8e5481a9d93a50d40196923b056fdc9c9b8556440c291a8863bb77678d09b105d8dfee6b4b7aef469c458e774b321860225d4355ea2bab9622249c204aa542b9e9c9693bf31b48baadd0d84d26c9849d6ba7a7e38884323ff2306ffa1449fdf18d9bf29d6fff8d77f89a7bafbab6bd6b17fd5ac0ba7ebc1f2d0acc3dec1eff529e48dd0a476e2096cc7d8c1e8c83d6557bab539c360cfadc51a3b80bc77d2014559481a6c59ecf86c863842daf0b9ca8691cb0c396edddc0ac2bd6e0a9b273e1c9a9b16f2b93598c1ce3f5f6e87080b8124085ddb918a33411e8dc934a3625f027b0c5409c899b3a36858ac03d54e7349d160395d6e74ca71cd21a7a34d0dd6a3ea98e4e63ffb2703d298ec4c23d966a81d8274f786cad92712dc191856eab275753264c83d0ebfb1b1641ceaaa010a60e738a602b65c17d6ec49beee2c0b3b22e64e4b8551a89d3d726e27816b09c4dc1cd23b4be48a9f519bd37cdaf33e775d0c160befe02e43f40362b5924ced7d7f75493c4dafa62153d1a29e26ee629ee6a5abc334880f5abb59d93c56316a0feeb0e32d90ee14dd684c7e554319d0cd4538dbfcd91555072d2be2c4f4a5118d9b90f89250def581e1a30a518e857b45d9684871445e4e32de8477690fe865029f05f7481aa57cce36c5552fa66a9e96cac0ec3a284d06bca9b8cac607961a380d13eb6e82d295a7e95eb3ce33ddb7a8c0167ec12e0deb34bdb485ab9d9af3481a06e03e38d1785142bb22f47b85302bb12cf9e6228017d73d6ee2d5e0a74e16f134f231c52221b7f739d65cf689a09f58fd7a2907ea4a5a8c9c1f7c1f102a97c40462f4eeb7fca2b6b5da88b8541f3a7c97a280b0893482edaa63a26dfebee0e075c8dff18c4409a1c9ec03120c6a297992b356063db9044f62143a1400e3242422b8f5a020d7723835be079d941554cd60ba0f814dd69b57d82e0a34d20a56e2b57540dcf3458c6b5c038eb19bc1582b65e76bd6ac217cba99e79bcf36898a79ba2a72f341f10ea08be6c1b9a96c21ece0140877b38b3cb472744f7224c55739fa4750e371efe51f008de7db2d7f75d810cb779900b5e08e26a71f121b6241c9924f4a47ce9eb5dcb7889919e9bc065dcf80556b1a6ffb615fce73bd2f323553c6b6b50dd6c87392e0afb9c59c8cc1f7392654192a733234b466e288f72bc7c1f014479b74646015c49a70811b3d01c2c31a118413aa377e77bfc3e0bd70ac0ab11a5a8d8662e93733c766dec13d4e601a9c0956e2ed3befa8778e2ba9d2db9d00b76c39b6e3c49c65c94c4076e7c34c40d88dc29519dc4602790cbe03d6a156a0ba466491f496620873ab2722b43941ddc5f62e13741df7ad43235e535e43d1564a8c9d016ee3f45d354bee284ff7803cd55c7bf53b5caf705cb812b8906d5e5d7a2308a18b556ad8944c5fc0f360923cbc47a069446e94473303be29f1398e16813c70ea2e241c9bd9a382849aa41dad120de45e16a99daa82e81291462c9757b115ab0be6706e7c1659bb240ddec1957db9bf053cbc6283c7a78e0913e77510aa7a179fe11c8d6168a9665250d0aca562149027ed80aeb0d6d8f0e5ae23acd3fb89c44fe1be834122d20f8eb40db5f79bb658e138519c5309a93364aa270a08f2a0564a0641e783d9a7b3e5cd5ccca5988418538a75f56d968461ae0e737e38de9a08c9d2932e98e87ecda3ab6325beaf1c336d71d9bb8853344ad75a9363b02b8d7ee847abae0f0181e467e44ccb4743e081a5998114b5582ecbfdfa962769768bb6e06d2fa87046d5bee5a3b4d82881d043ee702b6e973becdf2cbf011b4143cfc7cda399339709ddfd4d86c09a58ceb4cdd3c6b940882b09ed96dbfd8a51747eb8fb89f18fb9dcffa06affd7c7a6eeff40cd1654da720c9126333125f3b278aa56cd1657ad8fcbd34371c381d2a6f582649f6b7d0cc7b05c575300ab17ef4c55724ddc7df436e9d48306397ed6fa42ed7c35b48eeac22b41badba523a205ee9e58ef9070f21b8ede02f009c732267638da60c9e18aa98b9361e434d447d6e629db118dce3563298f05dfcde3a4a687db3c9a47b73c342a0f86727d5bb7fef6e1793a1451ab39070c3ee0fa7a93575c287db6564671731a3dcf22649ecbd1d3118d8e92d930b2609f04dcc60344d22e97fb841c88c4e3e5b3a3d82e783fe38437e90a95e44ee329f7928f8ae30904f3d2be28858cf927dbe115088ccc1e9b6a9b206a3e5e2e97e95cfbbe2f5c4bf61a75095f8e208ab8f7ce3f2157155b36d37914ee3aae8675a4670d74b1cc50e62bdc47b203a1f279715c6d7ce2d1ee6a1f9236dfc9ebc1b9d62117313e56b59c59ce6eb01ac1ee3c2f38bf2f31c8bb5eaa2da68c2c7a057646a282f7db3d71b99b1df181cbf0056b22c06589153593ce77e4acad2502aa6bcc74b3a5ec6ce352da4d2a57b31aad3b6bbc6f605cbb2ed0c03c59814a7c8e42503d41740ad273180a54ed6ea20d4fe79c34017d042431b820a1ef2da04d2e2447ba5710652f77acbd5b3b8bc46e1032751975332f684ab68bd334e38d420d883a6385006aa88069f2c1d5b446bbef0230d5d84221a1c1579dd4ec5c36a66a6b0e9859f3c63d46b9579cf53238250b8c6914f8c85063ae4e77c6269424bdb9bb4344ebc4740cc43263c8104fb1e3a92e207e9d4f7651de18a95fb88bb8455b08df638b1d14b52f937ccf64c3410aee2ad6b761b463885a2fb6488fc59acd43907124e079ad2e79850343b452aea57c4583f6425d71ccc66adb3722b25c440393598c0f1245df3cb03c24e5b96a8779288fd83d82673ee608bbcbc0bb19075cef001a8306f95d5ba99c5a48b224c9998cef25452350d86f915771bea19dc6e0730146d5d535aefe70bf8ef7ebe114d0e9fdc85d53f9eaefad29944fc1a9e835aecbfc1b48c1670dd10640c30ec31193111d6281f9ec4f60a10bb7ca749dba04390539b1602d9992779af166698d18d9e219afef46f6a8df617a66485e534859a68ad6b5c9162841a5c2a90b259810b70ba63844b5a52ebcdb6c5a0d92fc139d9867a4fbaf75b0552c82aa5893f83f0ef7f8b3c9b982790af73e18efb9bb6f5094cf13856f51c7d0e51adf39569e6ba2515455faa341ee1f4d96b313f51ad920243a366befa63099a2dd841fe083493bc750120883eef29122e1cc1632f3ca73f4219eb22638d2986a388817ba732e5172adc457cec7ad4ce2104fa6b1e3c0ee0a415d0e6cb243322239a4311f26377ad08da15d1bb95c23c0c789f596ae0c73802709b7f7e7bd591e49b50d2f279f5c83ccbfec6980a7d745bd1b3b4c9b78a18dfb599e194b5675f6ae2f92bc4b699a4fb788ffbe8b17fb0e6e1ef592fa52c666f345886063f2efcde19a54c5094dd20d409c39c17c5c090deeb419d2803f1751bd45fbb181d50d55d95c5fe701a64489669cfcbb7dca8ea9e9d6f035a8af0e3d8089b9dadcc9be8232cf5cc0bb214dd68a9bcccd52833d92e895bbd2221fb0037d878b326822b13f7a7c2349f23e1e67d8b423a13ee4b1e6ad13977016564a1925c12a01688172d585e360c7a7b841ac5358f25d3b4b3ba25f28f58a1713e94498ca523e0af0ae12e7fb535d671079b8966974f3b494a7c90d4508a269ae0cbacb53e406d602a973fe62ac03612677f95ef305e771d898871055965de82a176240cf4272b014b6c88dba0a0228ca267f8ed3b3271e6eeb4103ce521dccb886d4c309e7d873d362e7ab8818c406621b5cd4776c5a0e14bc694bb75e9c92caf1ebe6456aaa4e874990b2f0a891a48023340aa09422b55c812127e69cde5bf2e889fb63d8ae40798da0e36a56c8f1401d46b90e8533841cc5eb9d6377a4e7b1fbf60a99e1801d4b7fe40b9f51b7f1ba6354797896a1ba0fe7384565ccd14f4d340d2df91f4d0efe83fadb6dee7351255932fc07ba2bffe49df7b2fdb2f31e71add5c5edd8bc08b7c37018d69bb67919e1588ee81e11c52eb00eb78be949849dd82c7defcafd9567c540a74941370bb138f73346edc835b232ea00b6855707ad12781143d2a65bca233f33fe39396890e6edfdd4dfc7007e500eb83f788c6b4916a6a718aa2b38bcb9a87a2ee01742ee086d42cfda2142b553692eab70718b201eaaa5110278bdcde7cdc5c511db28705b1b9d6ceceb2cd4f19d27661b6e84f16db3683645b2278031408d9930af3e6608dbee8472e7603b434f09c4c35724eda78a7428cf32c2e0d0ef26f970bb595e061957c241f6f50a8730b1d38bab246e61bc7f632c7789795f4a0afe629c746482601d39dd00a49c7082a4e69509295b40ee6736724605bc4aad04aee6630ff12511d49a6e2681b893f9d2301910c3e3e20f7d87ba01dc34ac6192ac0c15ee72c288f89e2a6a69eb02ae4194a19e77d095edaa901c38ceebc8261d43e0308452adc321eb1e2df3b4a007c64db59bb84b18ff966b8c37edf48cd8f5194e01cda48c79cb30d7a5a4d6e3d106d2e43eae44b7cf3b3b7635fd745708f9e81daa53ca12db9209ad4b1a05b5dc23ad45b5a358ef97fdb185ef3c08685c8c830e5634bbfb256dee3015c3f308f2dcfda051a8970207f1ca61947485988a9c8c2b19ef8dd9dbcc317f58cd85d242258aab48bcefb1853ab078d25fc83db045a680c6fb2b21decc1638cb1d20dc8ea85050f63c3478c0ed14cd974a1e0e480f3e943ee0895b448230bde5f99c176b3955929e3edc9bb5d51a670f033b4622c872a8560b41685229b83c14c362ef28fabc1da2ec201484d1bbd27c55aa5c18219e987c92cea09355f33bdbc573dbac3d7069747c9d454ea1359f283648cf6463e028f02cc43a1f34883ad602d52db00e391b52d3c9fe36f457e60c19d275f410ea32587b8076b8d05477889d56d0b0b9ad86cd29902a418726953684e2aa6bdccb921af523bcdb1daf5499bb65ef1cfc60a9174f1ef74cb8e9aeef28a25d9eb93e1c8f1b7302b3e7b3accec6523bdeced08d0b579cf71883e4106627b2414a17eb5923aee9be97463064689cbe14677273eb5bacf2cd2adf67083d60c6be58891d7a9a54ed7427b33d8ab509928ae629e112966fa6f1d8a9a2792c5a36b3f1d1c0f043d789fa556649431bb55d9002d48dcf4bffc03867fd29037c7c76294aef6c565aadde7d97037d83bc2b0c3bcb27f22e9fd8d961d855bbd8b0761197eddc5ebb90b36cdb1e91fdb0bb7f0cf766e737e5dbeefec76e7ece58b453bb2a9716548b97ddfdc79b851bf813605ab6a399124a7ba2f8bf07e56d940c43550ce35fc8054bbb1717ac2b76fa6ea7cf8a7812d4d217690a40ef414802c878de93278e6f417ee27a28812501dbedb2a93ed6c3cea47079e3b642f1c70bcbeaed72b65dfd1c9f156f2a75b63476b8855b11901eb8e5b4e08c8e93c9952866a3c3140fd7f05d76e042f7282f68349d796f2dd0f5384732b90c3235679a03ce07a57452e8743ce2d3890f0d2876aabdec5c8571712792dbed5676bef267d53f156842364c6b2b073ebda0c066d09373b9894be5f3218aefa2cd9624aa405df8839805d09d2cf88335cd7c4a9f334328af58e1056278200064f1484db2ca2e532d1a723978e69622dbed0e848752275ba1ae330764b080d7c79edaa2188a8e3747b3253917230c6f97918ed077739608f71989941102005fbeec764ce531a249053d8d210abe2b48f8904af87d47f25745d55db317080632cee25db9b8f4be26cf787eee736ff3ba32385ef9688be40497522286c1019d654ea2421eef51931da4f2c8656397713b910c5a35f4e61d196026a5781e7761c8e052af0b3e7806b5df2cd2053e1f9341507572d033ee422a869e2d127927bd8254ec5677a810c8cfd74c4ab3d16d25a0cab7191b7c07ecf073455e9992d0d029e28b743a1726926017735ecee188b0e09d54d82c3e90fe20a7378c3679d5f22cc1abc3ae1d0c4aa6ee24a4c344ae244cecdf49a1e667740a4b1f27f9ad7b2a60480d48f908e1f1545e37f5f4789145c1873395cd243f3654d26df6b963ff89a1d12dd822a2c776b9bf90365ae3f7da58653ab7f9a18a5b6a88e0950338252a79562ec66e87077aa679119fd799d843ca62dc839cbbcf56345f77f84e463a454cd4c6abeef47ea66ce3405283c22909ab8835c6b5e7fa444929dc4bb3c2f06bc4643022caa04e0759c0df0eb8b729b40f725073f7cc130e9a3dd58682bf6c405cdd394469f60c79dfddf69aba195472b8543897e94c712a1586c2d4ed9a70bc8833c512b9c733d5c2d112e6d9e9cc506329f2730d11b4aa9481b252200f32ac76414c45a419061345545b9b6a1b0755668fe70ec9d65e84337c29e8ec76930fea2c93083f1cb769f4e44cdfb4ad0c72c55103c92113e9933e53f4a11239cac86f05db31eadd1c7c5eb49ce261cd38305b2d922c4ad160b93377ed0caebe8a031d185823d526edaf9ae805464fd52577df9cd9236f3b559bafd095fc274adee369eb69f8ff59fe5166b7b6f42252e0864e3bf2cd48becf3f9e5cee12d5c4e8bb66e759141f9c8f55bc27ee01ac642727cb1e1bc05431def7ca9391749e1e81639f0d74e01293c8995b8867939a856f86169f5539c48acba3aad43cdfe82ca2ce57d560f36c39d1dd69ab7a436f300fe8d23570e7d2bd01723b4a9c28da935b763124eeab3c6c0d6e2bef488ea2286e69cd01b6bd41ec8a89f33265720fd7b9208eee84e5ae5b41ad773db67887a2c78b720b61648d0e437babbb51dd7983bc8b22e6962422d64b3b448056848f4a1acd5cfc20a6896763b2bd147e8bed7dec284fecda53a99dec855d62c477fbe221dc799c77c9e675edd72b6c9f18211118b88fbac043d71bb496cb61bce8f369448f7402f9f8e1c8399c93b0ed75ee9a864c841058cf92093bfd61bec52a00c9e76b93969d7383f858bb824d7e897b34604c9f49fbe6c62a24536e28cfc297fd2105046157a6e7c3b45900a4ed0ed9a988170f6990a4729a0b86dd279eca932500ab0112a8dad61d91dae562b600fd19252260dfa38b84eb9dc802f7c80c9b0ae54f02571a19b5cb46674ed4cd938ef192b4c0db7ec219f7d2928b7fb8ef861ac8545a8027a65ae9b991269e0f25726e4d1e34ae947b1894414e02b5c0b983b35406809d57ea7e5da0d1961cf8700f271e950216de5c621977bd0d3d306d60f2683ed8291b18e5e50ae8f549c93d3817c4a1b82784d622ca9d9b8265e3c2b6f0b77961ce39dce3a649553c1d1ceb009e17bcebe80a30f7e4541f46208197d2dfc31c3f88a5177bba154ab6439dcf972e9f46bc26771372053cb9482caedce927983535200031e4120a8b3638776118403cd13cff3a71f0ceeb8a41b837792f03758fb02b7a1411c4941b2fc28432ae56e84edc0228c753f5a6f05ba47e75a2cdb72d2e1c8bd1ad2b39e6b00c41a20857e29477f58683406af1c7a154b1bb201c6b97204019d82f57a9d21d5362ae8147f1029ba16c4dec71b038f6c7b3678cdaf5049fdbc39d694ad50b771ede3727ff7c6e50a2141176272cd21eb5299de05bf5a25dadcb8e683952af6c59bce27948ab1726a2a80421e1bb8cf71571058e4495e4679c0e03c6d05b20e9eef33f33e798dcb64a7fc93463590e44cf82acbd1c760791a8f623d878c6ac1e3d9077af2228d8968a5da9e0389f0812df42ab859a0bc050313ca64fe7ab99d93a2be45bf4a2db059107a7ac4d0daba04596cff9c248a040ac9d313878fb35b9630ae28ea38904827059d101d6801d45000bdaecd710f0910a7477217ab894d3e369fd344aa608b2a8bec8f7807ef4ce448395b30f099c9a114d3bdfeb1d4676197180bda38594ec2a48a88c3357c038e1a70c61f863a99c865599195ad12db7bfb69dd41952e7a82d0dea786699a26d9ed934767691df61e48c28a9785a53417185c3ddd3186542b40611ebdab9557bcadf5c4aa469228a63fa92b9333ecdb2caf59861c942e38391cb4224c4531ab7fdc282c772a077f72483dc2b6a66dc4998a34c93aeb58cc2f492e807dcc5a6f97257f339e21269aff2eb40ea4114826e61d7e7c39dec0e04a3c9121629089b6119085464559febc05e6f7d7490d494bb193294c4f80d19eb85249ade0819cf2c6c232b8ae37d32e7c3fdc0aea20aa5b3b3271366d5d6de09188bdfe5b47361e2dee4d9f564324148593c2b85cd9a647c14860e4c6a1721e8cf57a9bb7828ae8dce4e1373c72e17fca81481dfd53cdc1e8ec8496777be4425b2799a1c6b82afc4aeade7e8a456fb4b1706d669596899928579f42061d8e30baa9d97eb69c81490041a78d742c7148008c688bb048899cd8c98ae2c0183471b4b91aa961edd0560480c139c5732f2d7ec76b42376e721f7c85a2eb6941b02222b2419ac89b33f77f9e9f9b1f17fde0dd1a7e0349efae4fff23423757c7a518789ecaf674bb407d6368dcdc1243896e34fd21619008bce8a590f90ba1a74edde83647fcc5dde5adcd6ac13c39ef0b294c8a1c81a573edb1cc77ad35c5d5259638a2dd63a0b491a2f2bc0e33362ef81528bc68a2246fdbec5372ccc52450d8c0cc21c1ad233677b0a1d2132fca5d2b08c9d7dccf5b1214f23596578bebd2f3ad1d01a8bce30484e651a2df9cda29889260aaa0311eb1a2f0e3af353cded95893a412ee01e11a0da62b383c4cac3e2b0185eaa64ecb80964e46e55cabb4b1b054803938b8bd3916f268829a57be570472595f728f5a689fbcbc80cc65d3f965430788bcb465da240e490787319b847fc56c938a5ce64a34059069204ea2a285359213e751cb0b705d739cfb2b699e3a5a231fb2e1110594dc852099e7e75b638f0e6c607054f2c444e4936e05cd6140f2a7dfa27df6f7f7dbddbff05bb69645ea7774b4e3dcdc02f2c3066491d7f92ba56de37e5fc6ff8c2640c5a36c45184a850e470630a8aaaa087ba71c2b7adafb148580b6ab2e439333741054dc31a9da3cc5a3c67f8a4e8e6055d20178e6b27aef39d4cdc1c4cebce2fd5312b44febe3421d97299779444192007a10e43c35cac8c3d313a2dd680c80d5bb30921d663b90abb59e071b20efa0b8334ca516d783d08d60c609ae339bc507b4739f13940f8042d35c459975998df81a1e188e50d67c2c2b5973a3849920067a7853b5bee7db1b9f3a950b4a3eefa3d8890591348e32925b5945fb06eb24579ea45d08d54f6dc9de2ad8e6d54a0702bdd1e0e8b41ca0b05e5aea082d8b72c3d73d62d999b3caeac85499cb949f2151761e4702ba9b4da7cdc8b4aefa443c43411b7d73d26c6491cbd78fa7e41ba72383908776b8b11cbd63d6ef0c49577baa8d56eb5485c80f622d7aab29823830e8a5f333cdbf81923bbca5ec61bb7b204cd3df6dbaa0e2a6ac70840f2ea72cbf5ddd42f9809dbd6d00578ae8394c73b3a274c512595ffb464defff17f8f1da5c2fa6d47e951d72d403558256a8260e96277e83003bf8dee1897624b001481e0d66543d989b6339cdbcdbcbecbaa444fd0634425f95c21d744e76bf08849c605066d4a60d78093edbead4fa95eac47a5e9973ca790f07863d2b54e8883e51b19ad51bb3021f0e39e1c48c5f3141d87a48b94816eae78d545182d1834ad15c92e251fb7238a12dc419347fc762ba0f06852b66921b71ea74f2703ae71d0e26e90d26ddeddbc5224049f2795b7675eba7b5007382511e8ab3be3f4c1bf18e7a5a82780204f24bad94e09b5e77a061a5aec58f14889474dbe04396ce0f3013e100b3af5dca0d9ac9d9faa1d8d994092c2684d9aab9ebbd88d06aebb42b8dd6f81379f67d1b824d8050246ea46e002043bb94a75cb72d749749cf727110515dd187a253c875a8bc2693d0647913e14964f2a7a5e6a097080151235a715bed3e94aa8d5ed5eca946d5d6c13814e86aee36bce1e8eaa75bfe02c4887c7ae2cb640b1154d8ea41223326290e1e6ca71d0e4669f38ca37ad823cb173d321154d06a02ceec9d6a011b7a8cd6dd5b2cdb79ba17defa977d7b2ce988cd452413553c948a82379c7beaea9ce9f5dac874eedc8b5e3e6dfdc356336b2c63eac0ed174b1c4c4e105c8b3e66c6e81f30a255b783b6798a10392bd8f8bc12cce6155ba9a7858f3a3a6470930bbd77dd01a8cbf7956c171bf78069fb6f136de62ecfb64e1325244b4829416a974ff099b1d9e9fcffe9f4d506fde4b1cfe13b5f2a17634045cd2eb3f4f2b59ef492ba9cca722412f5a34e7c934c3767bc02470b0c4e6fa980d47d4def91a790dad68cf37676db6b303c55a996c27a201f1d645e61a651e249ecfa0eb72346b5d210e3b683d73cf376399b84afdb5df63753175fbe1d624d5f510ef032f1be13e092b144767150324588476447a4c0eda6e12135ddf5bf7ee5816e611bc29798fa29c4c93f09a89a42611938128168c41be669d01ad3fddca4c54ad8bb513c45b7e595495e3336308ad3a08db5c62d4d6e6e5361faa01a382c210156bd8735edd9c637bb86786574ff51d56f3022bb239a818563bb2175dd20f34b90f3855c2a9f27e87d358a5b3434fec5217be649bea874c7d47019dda8b5e8728672ea98c43b1ea7d5eea0205e8e84ebfe40c9ad1199d340be098bb5863d8990148f87468aee132a790f0ef7cb2e0cb879713bfbc7b10fb41f09e1fbdfeab9b04f16db7b0ae4aa069723a4030043edc95d91e3aa1ac0911f44ace77294e2a7d703804303be74051d1b974e0b2d6a78f9ce4559e44e16bb9077c740475f47010923d511af6218e010c3da06b0ac4d0ba8e6e59e9855e6bed3aee6cc43ae597b3d8de45c342c8e3c53a6b60c5f3d52d3a9335e6acc38a2c765e83a4989c11432e328006fc6e09351e9ab7f8da137a6855ecdae75d331bc03c8075166ace3bbc76eb38734fab4c018ced85794d70a90fa3227beff333093be763aa87838353846cd862620bde1127ad360c32e8124d919ab97846b8489f781653ecbda6f199962966ba2d19528d464c9d4f1428b3f10514cccd8f5c82bda5eed1a34ab1b15b4d76eec318965d6b32e06f3d4d9ea56db65174e2f56cc4815b83f39ec547d9fde47570dc510d9521fb263474933ab56878ba5dbdb25e648c3472f5e41a3c75f660ea402d154b9db77e5c0c8917536a25dba72e13a0835856a16e10dc0ae54829f04965aaf0de25b5e86782a735d54c5a035dbb87462019bea15a038e0e9857cfc991a04c74e5bccb109ac25c6f81f416cd6f068e3c74f4f95c02e174486d5390e6e43c5e77831b94c37ab0e81d4df35c3f8f771fee819e6e38d33f5c7be81a61b5ec5f9094d0d8bb2ee395d385e79d3e45fa0d357449a0a053ccfe43fed6bfa56887b7b74e745fde028a67d57b78601f5f48ffcbf39b4edebfe3f2fd5b219e4e7cff06e0b757c27cfac1860fefc700ff0d725edf56f2fa3e81ff4480ff4480ff44807708f04dbd9ff5e9f18ea44f35f893f77cbd7ba9dffe73357cb2c19b16fefce3a5d71dff9f0ef6271f6af9d638ea37c44afef24f10626f6f08507d4b354d5e7176bbfd991f2e5caf64fb151cdabdb4871691eb92ceb30b72e0459196d354c413b7a0a82483af86034833e54932855f3bc1aefb208f2439028d61a962d55a627ddd1d089981e89cb2cfa71c1f7802d6b538da749e0940687750878cbfe92648f4ab51778eef5bf4b52225d1b5e96b091ad7d677ef1267163d34dd16311c48dee6ae67c1b8969d0ec9e84181f51a5536e9963a43b0638ea0249137c82a3a9eb54a73eea515df13b84a344ca94bde50efc20c4cda0e3ac3e1ca5312608114245e49e9ca643081634242fb7a9aceb7e3d8aaa743a5f9f2cd8e4752671952a24a736d616356ec1027c44685269e67e0a18bd93d842c09ae9876a3ec95b4eb5417d4aff783476ed1a424ed1739cc631dc9ab3a5e3a5e31e6d938e16ba116220a23d1213a616ecf056b51aedc9e0d71c182448365e2c29d2381dcd892e4a7d2b0c828536f9652789c8b4eb6adc40e2cb8c07d4e525ebd8aa7e310dab67c404b8473bde36800f740f1a3735f42a45aee60b80ee38239b0b7ca2c12f67407b8a35c2a5c74314dcb85374820e78283f2ab4ea5d35ee62d370c4968f211c84addb21f17bdd7a37b37a45ce17a2bc7afbc74ba70ce1e77d96322da027b92632debeb52849c58e8e8984d46346974e42a4b442df557254be21b16dd7b5207ae8b762aec852c0e2d7b2cf0b467e5966b4f72171c1a712718b721ca2c7304c0d2812ccb3d5cbdb13b2c3da574798d28059aef1c313d45ec159ac0f618948dc5c66aa1781b1507fb16299dceaa30c4c68775c948ab2e2111ccb058c2b001a7cda0446b67b934a905a2c069f0e9797722c2e0b4404dc387c881e98d72b8b098d00f82a7af58e38d306045b08c0333b91f57f088751caa3188ab1fa4ee7a48d1543b104c6a2d9778a447e69f7573ecfff8bf0d9688dd3b2cd12d6e7313147f7740889d34c2e2953b59666b2975cf8bdee91476ec71bc50f4662f21b6268e0e0fc5268d3fde7760a101cfb19969faee152a64495aa842bdca4c548d46560b26917b98ac4d409a7035e0f1cee09fc31c7f3c1e06ef9a29c681e5c208f80a8bd4a147831b9f293e7e6ea92b08b525d75dbc9c1f59fe288f352d896abb3b8799c3e93615333ca13bec15d477f6adb16e71351b1ed70a86e8ede036ec4c47e264d40534f16c3ba7bc97894da38073914bf42c26a7094787abdedfafc3f16cdf4cd22495b91cf2a190a8433aef513b939ce34c22a073107651855e72a09501932f773ab888d7a582a0b8c7c9f3e5e4f1102298ea52460be0e74aab5619badfa90ce690aed2461887027bffbeab085d1199dea5ee327411813162cc4005b7c0f9bc84cc55b69b2b416e6a3c264237cd7674dc3ca428a3ce0201e7c06e66eff749eef5128deadb21533d3c8b45cfbbe72ba233893b89dd0547c5c1da4f1763bf1ec912634abfbbf24db144b377b701bd486ded7c60738c69c9e51088ddba4daea8f544e92f407812001cd703b5f40d77ce87de9687f35224444bae59c45a999dec55d2a7131623cf3e6fe4b394efe87b849abe73366062e6e63651eacbd9c933e55a5078302760e4e83036815cb12b5c62bdcdd35a7230b0d82ba6061598ddb0c99d674003f7953df3737dc33905ae50941de5d3cd70cf730db0a5d9a52adbdabe79166816d56d2e9c8e602320513b42b32540080dcbe45e1bb005aef7ccccd4195f6574dec9677007ed4871c215f2e00e2ea5fc33df35f05f5fbed9f497f7160eafd9e190d3d3003ae6bc8069268eb7b12531c1895d2da2002fc9e54c8dce44ad7cdb6ad9b5bd4e13b00553c5fe1098f6c90ea40d6343d263e8ebb546faa0a57cc6efaf7940cf3074099a1aeec1440b71604474eeec12f87185350247d79d0e0017eca818feb1ec5b5263f272a7a4c3aef1fb6327ab7862f3cbb2d3aeb1b12b331a560ed7294453193d41d34518373fdbab2bb6adb82c639b1bb5bbc0a257d009e2781c20e6896c067ec717aa7ed7d2553ea69bc41ad8ea481b71bed4a5c1b164cbd2d8a4871e0836a18e96e3d8a2cf887e69c02367b49c7a2951c93659c071a968bd3307d491a8803368793a4cf3113f218c6b80eae6058d7632fb7e95454888a14743322e567a4e7029cbec5464c3145c9546bb89dc0d6ba500c828c70df3219c40b8b468d3ba400b738a2cc13d5d0ee120d79a771e6102f2804bb6808549da2904a4c0c4525cadeac8c94f32a10368d1b6bc04828d4a5e163e1c4e2ce65ab3cb22dbacc563587b3201d0ae0d654783293b8f29504a42cdbdc3d8b0c7cf84ca61b711288909ce747522aa401a2f0abd7932f432d56a29352578832988e0103ce009ad928ff2d197a11ac35139d6fd044d4e8d72bc48a0ac241d1f301189e99e6eba216a22f9e0599672aaa28927977cf279366d0a5768d37b9449f3bdeaa92954760a92f2a0127a5892b4e1a1bb31ebee940d767eacd20bec1a25911f202beb1cd803729e4f750438c93e73b2ec806f63f20238690ff0bb848cc7bb0b88a701df02455ec5a4289bae089e8d233ce6416b17fb103c97b5580007bb30526bbfd0cc01a050c0c856cd9f7a31b270154218e9cc88ab582a7d449f9c4474fc5b73add066de391440a4a76559ee29820bc0098290c8b1014508810076aa9a35134f5dcb1dcef224a30581c333e9fe34fe531e01faf61ac3f751cce35b4e1f81e5972738f9f84eed779ff6fbb497242efefaf074fbf0ba3354cd793125dc8377a33cadccabb2bdd265e5d2f96dbf4513457908ab46ed8be1b00f0b2c9e0690917df0c42c2ed4c65bc4c80c08832b8c3fc936589eaf184417174b148341bbdd08c439d9a95c5007243d37d9d41d9a5bdfdc8edb12ee503d959bd3298ee6c71ed521f6ea16cd2acad5b1421bd7f9264a963b8c22e8660b0e5a545875d2c8129231ecdce4c0066e7bdae173b8558732a5a605b052985b5b9e90cb1e3d1586bd134fdba44b429b31e0e00afb6c1eea20a7f578becf07749a0981d5f699ed5b657a178995d2e9a3d61ef79be79521988a419eb6ebd53680897381402d379def8392e630b6e33a303c8464ea920266f205286495abd2e1ea65c780bb98376ce5a73b1012e248602a6c1937552a1c42b859019372acb89cc5b1d1873d4cad4723c618867514509386d699297e0739cada9d1d370f4b5bd94b487ba4186fe2eb50128fe07519c850484d790d2f5163871c2576cbee2ac037e34684b00dc2a2b11352ae64cdd39a72177cc62f56671e788a85f6f0c4b11eb9068c295ecfbbfd911c8f21138c3b5a2be303ad52b7601f29b72ba8f04b07eaa645eb1c4e9d2f2e0f73992a44c4593f1d20ed728707858bd3a34927d2c20ece28cd9c3093b29fd276098f62aa9af8b938ce1124d732126710021df50d0561d78e55ee789579ced169442b4d845a82cbc91de8cd4f45e69a6e946570755a88a651a216c5e9d07a21210b0814baad4f6d703d99b65136f249c0f6a5a039ec66418ce612e443a4d27730522877b044f0441b911fa1a45cb25e54ca288936ad6b51795aefc92452c84b1899ae0376f629070516434e6a0ad6d11a358d719f764a5105dc910e12a899f769b8424ce368cb9d3f5552e2a7e3e375650b4499c39092f4e5341bff6170f49a6ff96b2349f40e49c6137acc3925487b97200e22d10f110970dcb437cca91fab198d0c446ce46ea6da4cd455ce2ad423420347a7bc80c689120c89d38dea98ce55d078d0785e61d22c9bfd25de1fdc1500ee110c9fb55b0cdaa4d6ed4c95377767744d04a2d7aa13e348a404a7c3f5d82fd555dd1f78419f3c210778a43f9bc6eaab17761e90835015bbb6dde98b3a90367cbdb92778979de1933e095b849017340c3656399e99519229481511552a972ba55c2f0c75d7b92dd450295a9f433a3d6fbe394b5d0f205a83a4af00d7a1dc27701e4c38ee0208a96a77e0accb9cd1977d14ba3024959a775c889e0a486dd54d307304175b5002be12119345570a4b90c16fdb4cf1e2f3ca805189faf9e65c09bce4a4e4d56983588a94788de41edfebd33cfb746b927466d0aeb3c6792bedb3c0e91852515777cd4bf21cd446b7263b11192178062efb47c2629ef2830ba9e70c176ae3ce6ff1053de4e5304c36cc1d482305231c2925b8c170898b907c73ec98e0e6d0d7caa6af8e65c581b800aa71256c5e1984ec4086fbcb32ce1dda6bb7ab7d2d0298b6af0dab856e03d61db4797572245751a9dcaa56efd23ed7c86a0f833b8b9717437abc09866e0d9a3867443394520925b5b1babe5f528fb95136bc53f53daf50d9f974d2c28b7511219ec4ab92cd5666d676308b145a78f6b0c6cb5931a78fa6d0ba91e86221d4718724532a4f3d1d5453b3a5d5c6cf67983f0230b367413eabc91af1c37c3f80b57d17cdab1291bcb4009458298955781324edd29055eacd390ab8e6280abd95f967f4c4895bc4de1e1288bb10863610a552d9572e98898e262dba59e7e4b040e8c263bbde360ad2df048dd8a1e77bee6b8ac34b9516ff13f7023f80e0a1fd7f759090cc5790c81d553e51aac931f0e97499208e8ea860990283ed09e41e17be28f05dc48916a515a067b2be2bd04e7b3717c95e962b289f239236eef270d130e962b105930acc0a5a202d5b4bc549f13e3b2827668af91808956d3acb718aa673ba855569a4edf4c49b5786949d5655aee624c29b477be84d24db592c45efacdb12e12798b54f0c12d2fc29f20dd21601f3b6c83d111fc06907b79854903506f3b0313638c170ac5d9660550e446596fdcd85472cd9577466fa9c8872605106cc785121c5719c8b57cb344fb501768d22fae043a511a42b92ee5c8b3448beba07674deb0cc05255fb5e1b4b24e7117269750639516b5998144b5aa55dd4ac51f06b5c455455bbe61d703349ecd173819ded4d996d7a76d793a30222b9269a162707a8ed75302103ad0c7bc64d317ade03704dc99697357758b2e5b3aed9de9eb2a95daec488a835f839cd15debbdc6c607f626959366546514970f566f4e805189f97c92ebfb30db1cb7cf6dac2da247487ab0bdf8f196b5d5a55b7e22ac43397d6e87e4f50ca09143b74a4bc4674af958cb578d1afcec00642245957834e1a249a93b6043832ac5473dd1f974a63162862cb95776b273c55077f7711f28ce6201fde2813a514b071805473a341f81ad314bbe04542c9850ce52b680b0071bb91d408a7b6d0042eba858de65bd539dc8ce5eb5e85163e08cb737c4d28efca6a759aa49ba005119260cb4af8fb7d1e360055cb941f16787a61a99847546e67c4366329389e1bc8a6f0d2d1c4a24566fc0ac7aeab1f8f71cb78b34291a591edf6b2bc6b6faaece400c0c4071ed4c86022f253d94b59d3b030c1bb70baf3b1a4e9ec98b29643a24f487205d60271d41938850e980d0b17a32171460b04a8bbc6c3e07160fb0a6bcbfcd6a7db2a8316a99830a79c8726091a10d7c35db84b33e1da5de8a12b08b0fc676ccafbcc35797e9ffe5f1d7538ed157546473a58996ab20c1812c5a4ecab1e31248831c47b0972fe70dca2de4c008acaf4c3bd7a094ce124d7246170d24ae4d35a1f46f8204cc074108f997131314fbe30ab7656ea48614dd1445916bd9e496445862b497b2e4ba3732a1be74db547459c18ab9541f2c0f8cc85baec264f042bfcb2b2ecd13b2ae58d667d05d1afbeb8546bc7974069d11e849ff891f7a28538dd082cd6ae94bdd940f5be0e5c40637b0886f66404a0c4fdc855bc995f50e7e6b44526dd9a22abd8cdacce505dc6704f24175d272f5a7e8dcbc63b437807edfab5853befbab9be9a65964711b5954c6f90018386338659653eb27c245afc6004319a097bee96e4a9835281c8ed37351d51d3bf4bc984e15d824ea1c41f625bd551d2e0ab5151d183d20e598fb262e118b5c7dfc608d29d22ba0a1e109fbb1267b2c36dbf3f4b5c0b916642dca090d1aab32449f480580db4c43674836f62b4a719385491e578498feeed7fdf647e2ac57ffd17021fd1d73462c7a9f2e3b5a59c8ed48d5f1bfe2879dd712fe23e0baa5668b95297519e6ae7e2d1b09938a603519e4318a14133a20b0cbc7501b479975c6b5d16db5d4e1c3b855cb9a444c959c0e1d88177a356d05a2040d4e288ce9a8d11be357ad3dc7435c6b1e8b123748807600f9fa521566263d9ed0670dd61798122790227f80e8c617f9240eec4f1b97d2c1d27b742d9268b2b2a2e166df4145bf2ae36e1720ee302df579ddb54675aca37f27da385239625b8b6f6c849f28791ddcf5c809b261475d255dab7c8315f6ad9393a6495a34c8a89dc055532568d842bc1929b76eccd29a21847eee2c5691bb038c73731c5074330c54135937c84cf1711f645bc9874527b3c77d3f6d415e6b1db09c48bd29ec8812b540413caf35946b1444420c3817694c201fc54dde8945618eea69e476bf3056950624e7a7ecea243451ab1b11ff3727f16bb646eca953ede4e2472c2f52064c3947119c0e7963b6bc767021966cc70e8d2af1697346c00df79bc9f6d0e097003852c746b4a5d0dc504954331e2690608ee6c94fb482ecbe876cc5155e506da392ad9159ac282455b441351dac239afbf0778480c812cd1089e89d549e477d8b079df33ac77427f6295de3af748a98b012971e5e64a93a0ce3a13575100a3e164be175a0a1fc593a3b358d1558cab35878bdc80b46524b79671b09308ac6c676f3e48e9afc1c9eb65b117607a7755688e0d5964cc098d35922535a85ef77404890166f20828a13a008af98c7344263cec8952eae2636a8ce27d7fe7542556772caa44de4a26a1cde69a77f127e31c5c508070778de685157193d53d16b71a67458e4850e7dac7e23b71e99a4e8334344e0773a496a52a91f344d427c4c741a6ec9c2af76f7107c4b0597777e1708c48b2110ad2f15c6588ff370d23f2ed1b5b3fe6fdbe95e73ce993bfba89b45f4d64ef2b3b8b3c2ebce8c7ee3c315543775549b235b4968158f01cd7dd1571e62554e2b748b3ea72462a15268365d9b6c4e36049b95800188ed06da98da74229569a9f56d64625f8a6b19b6d1a2926d9edf50817e0055749054a8d6a41044281bb48733bec74766b05270f1710db6f86a1e9836db56850ecfb993c496236a0cb9d478d82057ca430e236b1f72d393457dad220d53a4d004338f975f355f146a4700e34f64a561f997bd1d1ebe5e61d4b31edd4bd4dc93cae743a122f3703f61f89ba3b65ec05806c348da6622290b1a1cd718844f3bb67f1ee9de66e8b1d25fd55442c80be798ec6e98ab0c8e41517e16b2c381e2a87547e5cd981eee769ec4c8eaa6ce18ecdda7e64bdd1255799957575af837079492f70355d997be4ec399ccc92d40dd9c6b9b242b017d7c662302a1e1c46b5460aacd21ce4f4d6b8c40b6ef6e4955f69d0ebb6387459075bd1bc7d98c2077587d931e444c4dd8b0414a4ff1153f9b439e87bc9eedf7d3eeea7d7c0727893ef38fcd7ffdcfbfd9f7bbfff997bbf3f41d58f9fd47bdd578a7ebfd114fdf659d5bff3e5ae67807efa96e917e01f00eae70f563d7f6df1231d69d506e3f327f03e7c6b11fdfe6bbaf8bf7f03eccb87cab03793f20f53fc97df0efb9fe6e5ffffcdcb275b4effdd72fcfdf7791f5ffdc34104fcf0d9c717457bdeb84ebc69de63c7ea2fd07bc5bb1543f1f802ddf7df57fcf1bb78cfcaf7f4f1c71ffcb9a8dad4f35fffc371e197e70f22fe83d8f02379ff5410f88f30cbccf393bdf4458f7d4e0d0771e6c86087522837193aad1984604c57fa0a5b824d8e7d9f71b4251925eee1e0f974f18ed722b898e90545f9745429e938f2ad599cadfb5891be66ae0a1495ec72692781ad41598faf4279329b7e3a9319abf39d73858e0e7dc44c0a8eb554e0d8e0e0a2e62a2f9baee8cc90e0fe2215c39410c7b9a4ee6b72d30dde371a062f85696ad81b85c06c7467c078dc95ecbaf2b1ccec77254197e11e83d681f0f322cb1c5383f69755457c940646e34a8027803d497b707784467bbf24b476e94e0780d4d3f01430cd29dcd5ff1e45fa64d13fd318faf7bff7c9f567257afb1cedaf44527fd02964ff9d4eedfff775eaf943e22fcf0e2655326edafef387937ddbfdd59feab2de72300a1a0e4783a5f6ab2532dcb117bc8e1defe4bd958e6487d11b8897945eaa4c4591d2f942b199dd491a45df0db5b87005ebdffc0a5f0ff370612daf2b3b954b756da7d62b71c1ce190e363b8548dd02760fa9a2353172265bfcda666478d3d045bac95865630318c850e928cc4547efc90ec6007ede7377ad835983bb8ece78ea09b7585ce184ee8eb9d661c33ecb75443303f91e7046c1072b1fc0e70014b2b8bf1db19d6b757509f22da85c9a9be833b2a3807c0f857dbd7387c74e2e12d6767010de62e37245cf34b6646de194c1a157294c574f583310cd30015ad969cc925032e51d493e9b8591d84dab813bf5800971582480e45d6980b44e5c4f9a94b2ec8539630346f20be1da80f772acc06919d75e51c8bbb4000a1d01083d40703e1b340df1c61d7061b91ef6b52ddaf72c64af2c25ab5383aff83acc4e66a7b206ba0ce263655236f8aec2db5255709e736cc5635ac73530814442965cdbfb2a439bca96a1391c83cb9c7b9b1adbc1e5c83656feb81b135caf5263634290b3fc7d386784d9aafa1107a2d9f7654bea90438def4a545ad60c39536da42e8cdc25fdbe0cd0f315d842890dc3ab203fca2a54b347c067840db7b66844ba39c1746cbc82b80f82783592045ab441cee01d50a768d1cc8ff70e2a797840d49947e77faf3bfdfeebc0d1d40f9bd6776df174e93bbd7fafc51bd03cbe19ffe529f47bf9e82e41109f2bef33f07ca2c23f22d25f2f991abfdbaa70787ce391579e363da56d661dc3d6626d87f6f0f50843631f7503b69e442294f96377e9a0bc2e79757156c4c08a2a1ecfd2793daae1d10cccba3fb789bbe0e3513bb9ddd8f46a7fef13d4a3bd4984fb1cc06f32b0ab719ddce9e52c66e819b8a3f5d1ed9754b3a9734d4086af607635d9f59837a370edaac5aeab7d15151c36f7dbdcfa4204dd055ee67d4e6e1e943cfba66b96b4bec6cc3007d68dbf963c9d5e7187b507f6ae7390861b13ac1d48903043f37699c4711cccf08409c29a84037389286477cc38ae526f84d294f5c00e6b1b8ba277d036d8de6bc7c8e230dc58f038bbe1637d65652833828034c70e25011551d7cd7b54ce4bdbeca62514f14cf42e1421dc47de9ba6212d74d188d403545eb2c6c59c84d3ca2c87cf9120dfc859b118bdcdb52d8ef68c63cc41dc282bbe5e0fd52df78fe53ec8cbccbc5d1141b05b573099eb8965986a5f3365ba39574c36e2dd0c23e08e6da389aee889bb85adb18660348b7e56168894af55c06233283645173a2b955e5b697735050229c03e6b4b8b4b34082aa8b2c3d9d8c1a3f4d8828f0da801bbf755f3661dc1ca9722ea2c07b6571b3dbd32276c6454d4ba9b57af721346f6c90c1490a3011c474c81835195590874acd918360700eb419a9aafeb391984da01a8a4bd93765fe0ec5d498b3dd7ce670b8df3f810b7ed9e71441174508abc14998e133ceb90631ce0e13ec9dbd8467a35205d20e6d3b5e2ca7bbb553855d1667168b99318c039dc93445057f952767bc49e2036c6787cc7e1d7cb9537d72aacf6c23e5e2f9d9241523c0fc2a255f5f1c09f129fde35c9700e131f8b08cd6ba62dfc80d39a9ab897cd4d4a0c0e186a9dc57097fd639b9bde83d0fbaf96576dd64ee35f1b14845750a87c5d2d7028e79468b71e20f8d041f5698bce543fe5ad55165df5e24be68d33dbab9a9bb4e5d5f862c100b998a6bf3f92dcd1ddfa32ae27a30cd9d5dba01cc0bc22deadcd311590ae97cf56ae3521d6e3bbc6d562fc140d073c5cc15d0a48ca848277106da4dd7c072681b957e1345e2d748b096e7cb404ee756c7986c4751f8e9b7ed80fbd11edfdb24520fb2cd7727c675c544b6f835dda59e8f1a18dc1dbbcb32cae6fcacad5ab4f67a7e2401b75e9cf311b9cc1e3cc64a7860f4f74c0823cb2ce38d8d6b92e121becb063a9967176a469613e9e0fb57f53030a2421c40abc63359ffa4e184e65cb550ed48cfb085e50cf6ba1dd4d21c85d26754b9ccef7697783c7840eeed21539b2f309dd5c26137333afdea80fbd30b255d57652361753cebb63c4141500944ee61947ea3298396b897748e3b876dbd98e782fe7ca58ccd3913a890c89e81d74a17c7d525d64b649bda6afaed8ec89335422292a4d7846d49d44974169ca0e3b40c1e44c8fbffb55505a3cb9a874020caeee9c4a433ad34a5d26be5ddbfe853d71d018616d5bdd8134b39d99b0b6698da68a798d7f2910ccc8728a93a4896c27d65473a50a49c1e7582c3974142024b8a2cc00cf8bc8326a4a0a01d550c127035185142228ab0a3488a1082a5584f80c6a6071b5b2820a8fe5a5460828a7ab634842f242db66d6e9eb7926853cc3e0268948b180cf4d769623d306d336c5d993525dc4bb82cafca244a1b0acb7fb0e4ba773ec662306e86e13dda00449a66b0bf9f5e6b709030a5c1afcbe4ea976c88bc2af27b553290582fbf0e6585dd89f8fec614729a530dac48513e9dd3fe279bc3c56feed83d0e0e3f7f77c90ef03e0e740e1f966ca4fcf91ceaf4f8e4594275119b6cbd777f1f56b8d31fe5a6f01ca735bfce981f15f1ffbb687afcfa1cb6fef3e6aff1bfcee03f74f31cee3e29b2b443c3e68ffdcfa935de02ffd3db67b7fb2f7fbc7508b20498e45ffe469d75f1fc3ffad2a9aaf1f18f4ec6dbd243b7e4c683ef79cf5c1fdf73f825feb646afe16fc2ddd4cdff0f50d669fe6333f671ec2b68a1fa9cf67667de0d47f793dbbcdf5d721a93ef4f31c1cbedbf7fe91b23f7e0ae27a6bd06ecbf8c2976f643e3fb3ff76fdcb8301419f045f9f473e108f05fe10a9d21cc9a1af933f808fdf6baa17daffd0dfaf51dbdd9f62e2af6f4b073d62cfd7a97df6da817781ec9b5ffbc4c9f7991af8d1f4fdf1cb1a3c9abd2dc06b42f9a77ac8fe1627e1947d7d1f38ef31f4db08cf8c7c4fd8bb1ef7df7a7cacdb8fdc06411ce4b8ef3e62fc24e14f29a8af2f84be9770f05bccfedb675c7811b6ef5fd400fefe9cd3dad6307fa70fe0d3349ed348ffe797fff3f73f1edf6e6fa6bf3d0879af8b7f67c0b764f76be39795fbb4f5072ea28f9cde7790f16e9a5fb0edeff17ff855873fcafc93de0d79106fc4402f21cd56f54b586d7cfe3ba2fd9ecc1f82985fde7b330f990cbae24b0e7f7dffb03cf216361df0c7ef5dd567357c2f0edf89f05bd55f9b76ee83eecb987ffd280e9feaf7f30eac075e6e34bcd38b43377e872a7f446d9cfcfa4448d1a4ede349fd57cd7c82cf2789fd65e88228f9adeb3f0181176cf81eef5e94e26342f493c1be3c4ebd77019ffb7b46c447a5f7cc7c52feeea78d1fcda6fb5fbf7b27c17ba1ff5ef05ecbbfdc7f7bb64fcf7c4b83baa8eebffdcba9a837e0533772ccb60e9a7ff9994fdaadefe0e721e98bf4f3db4e5b9cf1063238f8b6cc2f0bf301d388c7ef1ded3f4cfbd90e6c7c6e7eddaa445511955fff1402be5383f70bf1deb6fdf16c2f1fa2fff3f361170cc3bc2dd54bb199ea700bd79f5fa0f2f32b32bf5c1c360888f2af3f5a329678fc3ec7c227087db9f29c8affce4efd1487c397e7015fe46cbf87df5e28f1eb8643e56682bebe43e477bbb3de0067abf2f16d127faae12f92f83daf5f19857cdcfff57e844fd2a838746071e625f9f1eb932732755fff8da1ff087ecaa1f733faacfee3ef270e7ffcfec44978c2824d9e936f337f3eff4ccbd3bf5b5c30b6cdd7efe4e3fdfb777e9429042740f6f0fbdfd5e6d74aef0177ffd1b67cf7ce9047d4f6b42c3f92f76730fa2add7ffc749d92fe3e5cab27fdff38d95f2fd3f00a81cfd8fd7cea977cacff16b5f5cfcfa50f477f7b28db4b71ebe4e5a8cbbbbfc56df4aef4d6e8517aab79193e16b6561fe4f35b9b77ad9b647e574aa7e60db64110863fb5384f1ef25b6f7fbb4eed4b1f1f8efef6710e493bbe9482eeb5d6c6bbbf7d286dabfaf1c4bbce1fa5ad936f534a36bc7c47c5d6ec8d768203bf27f16fb7a07f47ce5be9d1ef567a313fe3bd4a7e2bc64d3aa2ef7afff2f7bafb78fdbbee9ab6af83ea7d7779508dfbaf7f62a43e919a31c8fe160dc32b03c7f151faf2567ae3d28fd7def8f9e3b55b507d10d24f979b63c1f7745cde9371f9732a2e7f4ec4e53b1a5e756018b64bff16418f088d7b47d04be3a5aefeb6955e5a37c1ed9bc46f83bcabf3567aa6e4236fde95f271ec5e7a1b93b7e5fb71a21fe7f6c6d26eeabbea150b7ed960fbd3f39ba296c9fde7f7852fdf6bd387d36f82fe43477df2d9fc1f02b709f997cf34f6c76b6fb379b9b689e4df6bfaf1f2c7d65df6f7c6fdfeeac7b6f5f0f7da7e7ff563dbcd2045d59f53fdc3e5074b3f137d8aa2be89fe76fd5d176fa5b00f5e8e9e68fadb5bf905cfb6b1dfc5b92fbd6d2ecdabd057fd1b6e1db8c3ab687f732ede2de516f33e1b91a4ea5eade7e3f8b5d7074fde8dfe6450be7c24e75bf199fb1f68ff567a61d0b79645bdc9591c6e247defc6ff5d197b1beb3329fbaeb78f20b969f2b7d69b56bd1d776fbd7e3fc2fb6b9f51b0198ffd37ae164dbef9ccaf6146b26c41c3306c4ecc7feb36dfb219d54704b071f8716c3d40fcd7a78afffd91c1785eb66978240e1e7ee0cf1f4f3dee318f49fcd9e4fe37877e9681ee5b8ee8f73ffebf6e5a35ea");}elseif($o==="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo
fun_adm_lzw_decompress("78dae53d6b77d446969fcdaf90392c92e276b721c9cc6c1ac382710233105830b3d9631b50b764b7402df5486a3f26f67fdffbaa971eed7626b38fb33927b8a5aaba75ebd6adfbaa5ba5d137df784fe3d82b4aaf4ce6c559e2edbd7fef4db3a8aaee7ce3fddb222aa3b9f7e2e0f5abfd2c9927796d5e567599e6a7e6f9705214d9f19d6f46774e96f9b44e8bdc8bb23a29f7105690640386fa73344f065e9247932c09bd5fef6ca4271e94d2cf8d241bea4adeae673f0ecb649145d32478979cee5f2c023ff87875745485beb76500c36f3f80b757f7423f1c78febd877e08ef02eece7be2f99e5bff07cff7c3f19d8deb3bd7770cdef0e35319e57110fe7ac783ffcea2d27b07cf80d2eba89e0db1ac9807d0b0511ae0df6f1eec845bdeddbb63cfa3f232a997654e55f4204647c3d1c07f007d4305ec7b04f370509c9e02966769954ed22cad2fbb882dd090d849943be4aea97d90c6444c442bc900a9b8982e71ea86a7492db3f8ecf2658cf560e40d9207eef3aee7cfd2384e721f89e723bde419db0a2e75b94cc66a10ef93da5b24e53ccaa11f6f5a145fd3a49f69f2e57c9294cd72af58e080a2cc191ec30a00b7f4341f78717459e981c6518dd8e7c9b9f71c7ee2d46ce0bb6195d4f4821e4ee50179829a632d451d060f40b80364a5b1975c2cd232a9767d6a519b61fe3529d3934b6fba2c4b1ce7d3789ee649597967f00f20db1eb13590336afb57ae1908081a8a10545ee9ce7e029a9e45d932f18a13af4ab2645a772e4eef11173ec6e5fc28cd17cbfab1c5331da870fdbf22ec807feb35b9c9cf43fe93c42ff338b9e065aae07105c28cd6104d85aa0f94940a3c9bd56117c063c34641a04a86510da84e9675523174efeacafbf53a1c568b649a9ea400fc89ee476afc605ed4c9451d36670a869408956651e5459e815547a75e0eec7ec7eb94785e933bcbe47499e1eaba58006fd0747beeca84678bc86975109d9204849e34cb968a619540fb1820972132c07ae13d1fe4576a2fb33281915535ae50a884eb3374380470c4d1e5459c78e7693dfba78dd06d6a0d9431680ef67c9682548357defdfbdea64b0c25f659d873fb9f6100cc4ed25f9239d2653a4ba65f61501d4aea25b2bcd654b6682cf7b095523448ffba844e5d8cfdba24825b7aab2ee1b5f4083382d2911fb01eabaee14951ce716cf2f3d08fb2cc3f6ebf1916f9344ba75f01056f34f2de80988c008d24aa2b0fab0da116481f23b0e1999562079040ab2da4cb8f293465616a6404d028ad9379d52f7e7b25c25eb1cc6bd010a0b4f117110d44e98b7a9ed1db805e837ed845ada0540331b0146da166b5f4ddb3e0c96e7014fffaed75b8752f1c9d0e501787c4ea7e8863c139219155add6591697d83f4dc5ead9e501af8fc0278034a740422fa03e00fcce18fe3c92ee8659929fd63378b5b5c5fca85181aa5ce730454145134e2f86f5e582d563b59ccc53e8821a6e70619c56686f9045a008e5f93b8407f2b59e36624a0fa75d6453e5cda37a3ac335789a9e2539afda153cae4a58883833894ca3b87e40802cbb00d882d71c319eeadda1d3ae50892ab78984b440a04a284125a0d290fa116ae8976ac9ee5a0b0869b161d625d75c41a1b238af6036bc4735d972b4fa77ef12307c71f7b1bbe0f11dc3362b1edff57097cd3454afc1348a180ca39b1a233449ab50a31490213a62027143228632af1499581a2162a6520f662c9f360c625f10b12f885869b0faa2b0320486e2c32fc7c393b4acea3d10c8b1f593415e3728ff21a78178153023d03be9b3ff1b1c27cd7e8315aa79e424ca2ad40096d076149d9173aacdefb57ab48a537669d7724ae2f68232c8ef8cff7b9618ab17777dc9a4cbd3d6965e4cdab0544b4fab5314f61e2914c01e9698a1c9eb625925fb670e9d0ec5ed38466a4c136ed8b1ee484125d876e029957767837e914ca41f60d36d9ea7e0499d234f302a0802dedbcf41384cabbd22cba245c56a57f314543b884af897fbc23231362c3383168da1a75d80b85e455724b4afd06a047512a9ca4abb93a4dfdc152b60525c28592f44d58b67435570864fcc8b853278c5dcd4a4d3f061eb9b2c153413f6ea32dbe2d6485fc0d2039b2e8b2b0f3c311067f5cc2c4e07299e79d545e7ca171bc64c91bb10375d690d4f627c886de39a22adf58af304b2aede532098e766e949bdad07a488861ce5cd97599d2e60022b35fb43cb38b538d2eb5fd48e45da3725dac98151e8856c68772db61dd61f5688f05f924b1c74b0690d0839d57a2440a8e9154c634c18920676fb274e7355e90772a8896b1c9ba869abb296bad1f03108a05c844975a664a3431af59945fd7691651809110c1564b1109f0916ea9d984b863ab669607417d5e255c40bcd74273de14c98676b80a6a7aeee3726b0debf4a6f0c79c3a214c73574995290d05f9510087b2e77c94d31ea133d15e44d30a063f2dba3bc5f8736dcaf2578c627698e8e5b014b41b976281ff0cdfd7c522dc60dabddd8e633f8711bdd6b07e0f037b64736d658686bceb6b7d33c4f4a1a208846c6c827a963c8832dec6a08b869dffd080a805dd64551a5b5133ac17e56eb646cf856dad9be1dc012556c9c4f16b46572968218799f4e32cd09509b74a5d193f0c6581c05d21ca5acf1a717d16972b357a5b5a6115c6e7c14c1b0649a95c9c9809e413c9da9701049a8146cc59f032c229dcf3f106d6ce36d8148c157a8a11ea023761f9f285ec5efb7bd07a10e736e64c53422b14a8d614ae08fe25a1eeef3b40297ed923d47b4b7815b963784826d53c11a1eb67c73969424afcca87082a26eed6d147404122ebaaa1651eed3b0a3617172025cfe2a3941df523dfe471ad733ef313c5bac6917c1f0bf1745fae07b784ab22c5d5469c5eaacaa2f33a80f389e64c5397232055f41aeda4bf905e8d9b5e8d11cfbb2564cd9d957b4ac0b7f6c488f717830c1b013d67fa2e89346b48f4da3ae5eb919c079579c07d4987aa75fa8ad67517e8a6127dd809da30d6ef72356dba33adc982c5752eee32690401962258d659a157982c497866636543dee029765c9065f87d2e23a3d9e970068ab25295096b18e3bea37260a71186dfffdf8e8f028de1ae1eec0fd07bc2aacfa4e705264c8752338d13f80ae70c34d5a552b5285bdfbe246e44d750e846244c67d6fc7f77de6ec8de634d93fa3c522c96332100318ab71bede96b452c16cab92a89cce3c60853843572cf7f6f3da0ee4f7fb5a60494d8aa88cdbf28269ff9e40432d700cf286e83046d9d7e4720fb506e8a907dfa2fa6fbfded116adc6b7cdf9d7f642df03df066ca5225bced977f4a21318955726b0066bd4cc0c67cda0a33d1efe3768989e34631a4d6b0a2c6bbd9b23b5d0e04da34a613d2d727211484add14ed3d644d75ec418b32e2908a8a133b1b2f089a84bcbb8fa7c539ca6971767b563609f2ee758d6d7b022adcb34450a8626700a55d829cce8d3924a9df03a7f86e1cce0aa00a0d49fe12bfd02a6985c75dead8b31c34a26c2b6c2f5fc9f66deecbefd88ca3c54adb5be9d94af242790f75b1657780134a103d28b7839ba47ce1a5c581206c9460464d6c6f19b915435c7696cdafadeb6bed51a558c5c2896bba60b41c4350e376b1a382002e16b3254ece2dd0bb0a5866591144e81c1d690f048417ec15f3396ed8e203cce0eb681a7ae751e5d1664712f7c8aa2b3722b2622336adb0afc0c82db5c3c5426a0a85e84f6aa9354fea085e107937f95594a1cb3946bb45fb9f51068603a027d2ea9dec8e9048aec992329837d1ecb3539a4698852d23c2800dae5539153896e5f21ef40505c8bcc925072c481d2071f5962412fc910ab23ceed5074dd97403a927457ca97505bbf793655d17b915f5a501f4da9b5c3efcb2ac6607821d73a56ed851c3c408dcb9c610c16d1414d4e725c77de8a5a6a351576252281bf6dbab073b60c6b2b655380e27d9b20c42b5882d02e81ab483c405282655d4c671d7acaa43ded60894a43465b2baf426b08a675d77a703bc01538239039ca888f63b39e687bc6187b64a0e0c6d4948f106d702a7dd8ae9ac3dd98de9325c2d6b8c6644c6dadce2e9982c3339775cf2693cfc4f932ccabffa6c66d607e93c29c02d689a211b30b72d6ec2395704f7ae41932455eed7de79517e6d4e97e98f9df081b713ba7602dbf50c4fafd20f0b243cfd7c0e2b68c5a25cb104933845dbc85985daca69af86ef763a57c3b77f92d5d0200010e63be478c46f00b5e0e78785a8b055b3cd7609bbf994d7d28107b8cb39ac330906d016662340602268a4cc85e49d66f3a174a675296f78078d48340e5e85237493d09204a62609934c6d9a8172c36eaa4327e8d1c2283cbe4dc3f0d8ecd5d98bfbba738177c744373b6430ac8c2a29f5d2a0b7efeb6261cdcf7af2e3396fa57af3e8822d068a132bdeabd6758cd50ff16ead54173ba629092a242be5b7eb827d5470d0036303ce0f8f45b674e4d258db0e14e92ccaf4f480c54a3bbed6ace2999de6b15bfe3aba78c5c45095e6ea8d9a3c7ecd297d4f55364de06b325abea3083a603a580be41eb24e68a36d39acaa915b61dc1aad41f531b82ece48e7ad51380d8ce1384bb2c55e565449605cd13ddc12ae67696599838831db8efc86b803ebac76d340262c177b0a86c82d02cdc03677b923582e1625a94c8b7e1791b17a557534197806b693c381e11fd48fc457e4844c67c93cda06efae2221bba6db79d20ce39894a346acc6ec28503db55736fe87e21d37a757f4442c60a641d87f4d9285cc626a598f5a638677363ad096bd9076e4e286d897776d59b17b988a93784ffffcf41770f9ffb604a7b33fa86bc0fcf2fad58bba5ebce31661b709db6bd4baad511d9344c4c14fa34aef1c9465e186bea32fd145b02cd11d87a53089a65f3125b28e06e0fa57950a1273a21983062528dbad8d3e9f10dbb92f030c1aabfa4fa1cbb3e49737932f1894e4eacebbc07f9d4ecba22a4e6a027e70f0d64700349450195f82887141710cefeba85eae4af9f1b15645b57c6de2da63dcd83070dc6d8947e8e34aa248569ca225200def3ec6b8803c6012d2a311d47d4cc6930dcef6c6bb5e1bd5e0715e2c2536f92dd3ba13e416a028cd7ca3748946c3021839c0acd508ad94b76fde1f9079f2d3fe012636c3bc6b52601da1836a0c6247a6f14512c54919f87b1816caeb6d14d29858080b05ac67da0a185d6c9f9f9f6fa3d2db06b8498e1b56b11f36316a03fd655b5e24f1f67fa4a05300b0cb45be687a19530e0b2cbec4b94c7a43d136a70ca93ed28d2d367b2f71f4f1a1c4853482445f92c85ec77fe989e69ace72f8ef5ee00f994f4096e0eeba4af16efea7969c66e9e636e1d8215c1ef32c39668e146b8df6a14af4361ea8a48127c14194ac7f7effe6678c422e3092b9222bfc1f1126efa56fe42d2b0a60e48c99a9d642263e057313500e380bd0cc20238d8eb324fb399bce188201ec2c26766880ef0fe197490c1be4cb2c1bf8af8a2886b10fe93fdfd805efa3b384fdcd29b33c264894c5f2744672dd55a13f42bd9bcf353495ed4d2109a418420e100d2d8e5b7109a1d9e1b1ce684129d89f2b64f42ad4ec0ee989cd6f07f464179e234b99ce4cb4d61a18b56996dc1ba526bb984c3d4ef1b022d42d935d189e82d9a38f81cab5b82a616a8a2bf69aaf1078d8868e2ea04935a1275ce24ee80233f8a3e16259cd02964a1fdebddc2be6c04f409c40e7170057d17e67471dcba3d221cc274e041303f23f98813652e136649208912f459a07fe7d62609e3258166aca229a7b51749ba34551d56acc543e4fea59118bb9c8ede05f2b3ff6c9f09b11a90e1ccf13396f1051f893715036d2baeb52ad235b7f0e3ad7a55625a2ee31d02553803f41129ece32f8bffe546370781d3ddd632fe204a1feda31cbb961b48cdb3bd168fa4a247efd6d68f78089170b2c15560399036a2b8a512292393af01e7adb5e065205fe013b012bb6f232cea332c7bf75a10076a54e5358aa8e65df6a40a006aaedda91aacd56a44a624fb11b9a6f26af593555944aa7b435f39b6c9c345f65e0b7eb12b3fb89be599a471405898d9985699a28da7739330d3a1f1da90d1bd5c471286c4b6f4a06b7cc6340009eb01b4a634183c77818e222e65f39d2e0980e26e6245b6be699630f505b989b1eb597dcb59ff8f08f561cde0974d8a17939ccd08e5641f36d6fbf9a6a47f759b62cd133c92eed4c269b88809da2955a17633b9185fb2dd1627a43b90d52aadc278727103f9c879a0fc288e5276fa84b5cf39aa09c96704ec91272bc0d1c7364b3699642439d46f11d2c911d924e8b0b9f36261e7c072d1e7adf78587b52946014e20116dc568e5139c303f7c165a178d62871b4caa2acee5def0187d9603896482463ba651f620b496db562180207ff18fe16fa80ec3c5aeeec3cddf1850a3dce2c882dbd2b85e3e3ac26b4a25220c0cf1f5ebd52485ae2984c70c5d03a6dd11aa0d8b9ed3ac2feef4ccc80ea0e31647350bc056d53ab0d239a895f44a2c8e37fead024357b88a3a7f6f1926d7b1be843812ac3460e8049b3cb81abf6f3987bf5e117d4cdf1c40b155345e645a98eb3a88c104efe74f999c803ef6c8f5c733ff4b55cbc27fbe085d22d820ecfa689442a8ea18529f36204f486a30ddde42660d4fb3d6601e21a8be1d0ab3f1b8e88a52e951742a82a7ee8aa39b6ea497207756d8c0c11b02e2875a0aeb3a1ac5ac544e01c9528dd2863ad59b84f8752a5e89fc2a7d00368f51928c9699d9440cc6d6b28c21f406740c16ac89083c606055af4b449a8743586e629ddcd2444b906c0ab34ffda3202ba4f94de60b23374c4e0755126987c96a5c09c0332081cad9dd619c5021c0d88259250170d25a52e729683c09179c02a4cf9a81da2c542df8e90136f7382601fab126a1886efd7ae3e95cbf111faed20d8cbbebde65e57cc8de0863a2398bba11d8832c9153b3c62e2aa65e4a4ee3135185824c6b81546d988ecc4454b55c45bf74636794c96a4715bb6161ceb7920ceba38edee44d10437d7a7d9e7ae8b856cb82fca02e0456ec66a7ba3b2b9f3e166315550f0d600b2364b9a45bc5a0c29441344f934c99e2d2713e24a4958b6114649eb69039ece569f787172122dc14a60174d9c2e4fceb848fc9944f0cd798e9da29c2794530f1b8efeaf6c12fce03d18c8aaa39fcae68307efba7108cfe4be772b6e80ecc614d6084177aa2072f2031d9d0e1ba9ca4c4ba1994352ecb9ef98d46d08672160d2c446e248a773605f72a7c5bc36fb3062de83d5450c188847e3d31c8250a6e71ff18108d5aa87e903aa1a5aaba19bfd2ad875b3cd7a7b2c0603731c4fc0801d0f96f97386cd04a1dd17a5fdb99a8cd01ccce5d780bc6085fb2a656347e5433efbdd907f462916ff24dc1b67794109ba4b13fcda1837ed3b922c2d0568a5faacd81c6ae26ba5242659471a8cda486ea7bf382b549d73fb1f3e87cb6e99e5d9fcddbab74069022a6fe700e2061c0bf72cadc0695a416a372c90d6b30290f48bdc6f6f10b9b141b5f43026c531a381caa2b5a741d57b2588e81cd16641d00032903d9786b6c8f04a85683ae3ce11514ca26ff46f3321f0087873244070886b8b35b6dc85a7fa125ed088a765873731d4853749302c1de5457e392f9695d1e393641a01efc39200755f5c801aa8aaa4f2aa025373cbd3251ffae44332d2938ecddf69e434484e8c4ef50557800f9ea0cd59f5c9f675165b171dcc266b621fc679a86eb551a54a6675ea51a86fddff004f883ed04edf36222752a6564284b1a5abcbbc8e2e7a4623ac4b61038c9027b469ce667c45364204061eee195497c0697373b149230b0bbb0aa45073702b9048714436483f6560b6a3c4f02506b67b9773a4ee82119aeddecdc10207de2b93f2aeafd6ba0dbfbd7940c0976556298b8fe255932fd0872e1aeb8d239418303e28a78d053adac9d4d0073b37b8b1aa2207c4b0374ebfd6a7c534105399eb5aa6e9082ce8a3d1fcb2fa5b86015e7c1cc108e7513ec245a88706f3fafaf2fdbfbfea04501d8de4521805a36ab57e5b54f5699928107624bb3929e8395576881716495dccf5d4e83a2a50d61107e660ae8ae57248f3749dd3f53a54d967b4219c0e93cd3a628fe86ceb83f5a7dd59e11c40a36b56087dd5b16a111a9e805a7aeefb0d33acd5711eb0f3969ef812fcf61465d1a5c77c1f5bd6f5adb6a16e903408954eeec87e934ec0069640af0e44276593bcdc07d2fe69e0ee301d62ede3466a613b8b9cda74a6e853ae943ebbe2a47fabdd22aed13cf877505ea2e0967d60d6f2a4cce1258a7940856e25c3b3774e2cbeff6449e79d5800f2ad8023a52b3b6084630d38887a9474a6408a551c9a7302a53d9b69a060eae90cb43481b856079de3098682c7f2fbada41102c85fafc78d4474235ac16c00570bd41f6ef7f3714f3b4776f5d6c6ea8cb778426d9e5b4979a289185334a9ece8b50a1169d40f6583edb8e32c68672dbd8b66db11a489f480f9388d449640fda4b7188e643459e62a0f449b46bd89b7740abe95d6dc6ee18f6db86849768d73b3450d356e947ded06e35e7a6930cd4c5de493f35952cf805878f0f46fcb0438f51c8fa800af2417c97489f2842e794ad1bc5d214f5a512ee7941f9eef53d64941773334e3ed8e91bf96857f9b13e5da90b7d2c180ee98689965b8006d5fb775bf8c9b316aa93b3d1c165c186ed2acd9388db86248d671446a745a1660245a57389ce9d3626aa16fdce6e0a28589736871acca00b62e70f24a750dbaef04ea8c3e06c0306532dc0aa1d1d1f168885c125849ac262a476d1c5369d1e8854436553b7c708c61f26271ec2b7d291b4f423aa71abc867a86d272ec1e4691e6cca87b422dba4a61f4eae55ff6afdeedffb4ffcb5bb565b8e00469440956245620970e400ed13e7d5a073b21996cffe2876133c2671dd83729acd83d800408c6bc732ee2b0d439a7ac5b4495d905b2c2bae8246be8262505d1d9e915ddf9c4ffa2be015137adaf887b3e4d8b1cf4c7d53cbab8021bfeaa5acec37b3276e8cb8c48f15ae30e028bfa2b270c60991993ad300d5b0675889401dae21fbadf04f1d59779e15caa8db92685a4e1e823edeba9e37936512c9a6c763140b87a2eac8b196c0b9688d2740204ba0cea1fedf9da4d7e2f1089eb3010178d132af2820082ed1b000c75f9d92665ce9214a7dcc638a65b21fc216ea215e774a35ad312c099043718ac34f881ca7f3b4e485a25e5f6c4a315ede93758d3ff8449763e1a4693f4d4cb92baeedeecb8e979c56688ee701fd142ce1978d1c09b3827d9880777c15ad9429ce0df892c32f5b6f56cd6efb02e3e2c1649b917557c17e704f532e0163c088d87be5f4d23b0c9c45105e2602020aabc3406318dd730acdae4e9b89c2a8d4f186450d923a98ca7f5197dabcf9fad6cb2e7494dc7f0c125c52b41c1bf5b33075bcec4a01ee9ccc4964d3d4e4ea6330642819d81fd52764cb6bd3faa1c0ab1532da35f1fd467d31f27e4106b1dfbaa4db1204d872fd55d9c52328df238a57b4dd1818c0bf401442145f9653d53d12d2f9a03bb2dd1a065e11864e9d7449d97fd9cc69fc33bb662209c941a705c3cc4c568c2ededb167cc0c2d770390b79ff11f91b7d848db073a5b69532932c47d5acce762ee6b29a50647676b900fadce81a60f45b1a89243dd407a329c31dcfa2cc959d044b93a72000424ae2f48c81e805894b441863b89f957f27488580309b9f026cb366e234da0de2511b1f35629fb14adb9c60ec8a4e4bd6b89e88287c763bb0172c0a1c289fe98e155f77874ad82449578c78e6d636e9d73afc33317cf2924e546bb2fe69a20a1b8606b8404b780e72ef9237873a3b0af962231d57694909eda86c960eb1cc32fe01a8dbbd590247c34c0d1ca6a9ed3376b4bd5681c5cb68e7df0d8f178069238d7777cddcaeb5de7909e5c0dc2db0a038ed66aa164d6df51bc15064743fcf344d62037d1a624d6bfd0bcb6834647a0f80e5422693f25d3d47b9d5df303975306c603dfb948c49ced5038aa4b0fa5ce43e7048b1cf2b0a24f6bdd2ea2ea3fe4060f7fcb7d24dd512a826a5de6a1a2538dab3c76b6ff75788cf7785cf06121d5aac944aab9f35e126e6e1aaff1c8d618aaa96c6fba305e3bc7a41e5eee7b59515489508e7d793ee7f72c41151984ebd3894f5e9f5676ec882ec4f904c67249e881ad9cf95a9c088194a37d31765eb72f8f9453cbebcc4620d311eaf9205bfee8903218af68255ea182c14b0064cb2e6c441f6db3b785acefdb0987087816559f6e03a97b7cc2053041ab2ef769db22d248ddec6360d051b83608ac847ce65cff65cd3bf21519b943eb38ad8a281919a35338fb0f7fb471352993d7630b440fa676256bebe7ce069be35b740d2f8f860c724a24ec3a77fa8e3f86e00ae6b565f25a76b68c957bb2a5b27389081b0ab6c52792984d3e4b2c5be2e5e3d1e1f116195002cd9c84eb49b661f3746c1fae7304b0eca6aadc2ca0630e32d8efa09ebaf5510eb122ef5b97eb88f5857b6e78c006557646092ee8d22c73bc793f89d70d0a0a05b127c5d9ea94aa656493ee6dd8d8e69d3607ffa01503e733dbfe3581edd60208c809a9af389ad1aedc71524382e864c733a863df8a966d06649980d4427fea6a92e65179a963088af064a87657a1fcdb908060a4651424f9727e05ce6d1f9056b981a06d2c2b04cac28e6d2abe2394a64632a0e53a54250b0da3e0f9e3740ee0a3f9c297c3272d7a5862f3982a8d741bfbb405af134d6dcb31d28d4375e0439f7eef51217d53a31957cf4ee36b27ea4319036f532602e976d543cd9bba534b63adde828f57871f8be330057d7592151168ad628977ddc6c9349d47d92dfb2ef24fcb05f9456b74ae27e40a5be093db97dee7f4aae5625194e09aaa8ae83f4d13effbe11f86dfdf8c123800c97a287dee1a6dcfb9f2d751f9550ba94a6fa0ddceede703ecee8645133f05193154ab470923646c101a9dcbd73dbce45c45e15e5d615fcc648755f0340d32210adcd6d582eb8d8c13b9dc88461d6bc7dfb9cd98776d5b5cef48d77835ee4688c669bdeaa430f6b28d954cccbe2b204156869657c1e8a33fdcf2156214287d4201671594a2a39856dcc0faac813ff0f190c2dda3fcaefd965ffa77430ea412d76fea5d56ceb7c17339d0dc9ff8a004cb12a8915dded968e6cc23aabca94243e8d5c23ca656719a0339ad0ab64d64d2cdd26aa62618f7ae7bb903d3bf9e824b7c238350b21ca1de3463088bce8beec67604c9cc90365cecf90203273fee9a33a037901d132322fb705dbe25710c6b8e788a7c7bdef8c4c95d9895bbe89be204eaee5790b69bf432332a797486571e956cf4e8cf73c8a70c286cd1e9d1bb39edad3bf9106a208acb4447f4074e561eab47acb7d51d26abbf37d061f6941d768ef3d994555f3188fdf090913d7624b5f56915f7f25509165128522572123fd08dac201fd142577be66da6441892f458992b3e28ed9b8f373d3264523f04ef61352d41d35335d9fbeebdd00f4c0d18984aeaacfc4eb7cd9a387a37f0be7713ef848360e6eb940de3c5adaebad10d9f5dba1a88d26154e181c4e746ef9efefcd3fed5ab97ef0f3a154cd8f81e8efe188d8604e3b427b1d1035ef28f97df3a1f917241f6125483da96b3060eb3b81d21cc2e7dce97aad04112454fe72b072b959e6e63f9a31631fbaf5331df1d10cfb9f3f67dd764eeb9debde34a13cbaa6e7ac0d71dd70993e7dab783b1e2ca246e72cbcb84bdebf16fb96be67fc5edc047c7a8241edcbbbfeeadc0b7b988a6735a681f31597b694bf5ff47532223febf7a65732ffafd5720dd92a7acabfdccedb51d39410da66aa401d330c0063f492fba188e3be00d748516d776622d95bace425312bf3b47877e14a7d0611fa179e3ac8f49a4e92041dc67a2e047e4bad36e54ea464f22e9915820156675a8fc0b4a8b682619d927ad6de568eabb7916e6be8c0da20adf6061f62e9be9a31b660bf7d0dafbb5c4125f0d71ccc99a7e68988627014c55ee886fa8f8e4bbea4ff842cb9bdf9131007c2f57dc78e9fccdcc353607e1759ad4dac4923d70753bdf8acf59ca3722babe85b9b9ebdd7df9f3f3fd5fee9aab8f1b02e751e33397cecdc61b5d4df487995469f346636737f73657eb73a3db086b93757d83b86e65a859f93ee6eac4e664f409eeb584f6cad1fcde278aecb3d6e661f5581ac790ba3e12e59eecd61b41dd823e6e487971e83a3fbea0ed89171c4da012ca9429d3d3534c1cc5881a902639ebf9d459778ad0aa045201ad7791402fbd4bf4e6bc934c8a0ffb72f3462b53cda712ce4fe38d40826402b887fe0177a5b20945187796a92c039d8a14b43b3c48e778c0e338b4b208b70c92e62d2627bd2ace5572926c1e196785c1bd39719d1e335ae4810f6f9f3f3dd8f7defc288298b644d039c1cb9007f4ebe5291e73a160e8f92cc93d3cf604b3857cff88e5c863ccfc05415bab323ceae1c92d1bc589b91971db4b091826533b1e24f6f31b6ecc6932044623f4997c60820cbfc052a1571e1498a17c9e2276f8f5e945e8700bf64f1d14ce3760d485380862fddb70ccad218e9767277a5ae75b38bfd4105a2e98da5437f88606145d50ad2f20e1795a1536c1725efdf8cb3d3b2e67e63b0ecb1c325cb6142c76c2b703e79bda7265e3d4ba781cfe7f562c73bc40608faefe78a7ae4fa0cacd73ff8d0886469523543565fb0674329f631b07f0668bbaa4c26d583f38bb4f3cc24ebea6f322a153b4db0a27fb6de88dbc87de0f5eab7aa8af8b71712016729190effa1016546cd0b0c072b4e607073375418d8398c46b002f1b07eb431f98c74053c2690c351f1efc6ddf39328cbeac1b1f2cb1386c472214c291f4a975e4c826c74baa69df4de1b41a14585132ee92907bb51eeeb8c71d65c02dcca561638fe206feb7859f1c61849efe0b224de971");}elseif($o==='jush.js'){header("Content-Type: text/javascript; charset=utf-8");echo
fun_adm_lzw_decompress("78dae5bd79771bb7f228f8b7fd2998dc4c44c6da9a5a69c7f18f92689b3792a890941d5f4be9d7245b54c7249be926b524edf9ec530b96ea2628cbb9796fe69cc98945a080c652285415804261e3871f4aff3eefbc2dad95fe1ddc049d7e124d67a5cefd6416dc95de46c3eb11fc9b85c9d31f4aff338a269f4ad7b3d9f4f9c6c6eff3f47a3d8de7493fbc8a9361b83e0967982798cfaee304cafa34ef95de25c12458d59fdcdedeaedf2064bdff2766edc7d3fb044b2f553737f7e4275c593f9ca4a1fc389806fdeb701daadb50a9e9c671f3b071da69ac55d7374b754a2f1d73da6ae95d98a4513c2941dad31f369e3eddf801d2c6d12c9801347dfef4c774763f0a7f2a059341e9c7947afe53299d4fa731945c3a3caa77eb25e8cbdbeec971a91f8fc7e164963e9d4f26613f4cd320b92f85693f98469361a91cae0fd74b61ff3a2e7d7bb1f22d7ef572e5fb3fe6f1ecc54aa514a5a5241cc737e1809a71132425445fe965e9afa74ffa4918cc421f719b3e2fcd9239347c63a394ce122c18705b0aef664950fa31f8a9340d92601cc268a4ab25aa71a5340b00f9b397dffabd5130f9f4edcad327b3681cc6f3d9f392b7b9b949658da3d1284ac37e3c19a450e13c9dc5635de15fa5cf94e72fa811daf1bcf4b1344f46abd0e06178372d5d62323722184f4721e49b5e4f4b986d6510f737befb7efd7a361ead401917bd32b4e428980559cabf958bdec6108b78fa04d0e4a8ebafd2d57cd2c7d1785e1a843c0238609f9db562fe204982fbe7a59543c21a8c1c4356f093a74f9e3ea16c1b3f5ebc2abffae66e3caa945f3d0750e555a6c6f7227d06781ace83617891fef012fe418e6f21cbb7d90afc5dc93037407fda88a8a9413af567c1307d09984c81b0677e3c0d27087ae93d7d32998fa1362861f3eee3e65a2d58bbba7c56c9207ed1c3f8e5b38bf55714f821bb586708b628fcf86cedf2958abf829ab0e58c701891f964105e45937000e074de9b063318f0891aaaa74f9f6cfc80640c3391a837bd0e61e23d810943c4a1e806001bf03566786e705c2a5f27e1550589ee09d2204de7972518c63992f63a5362631462acbc82c92b9517901943eb493882cc2bb6d2159334bb9f869836034adde8a7a94dc10a21057f1066aa024251f5a407f7dd60780a645d5eb90e83c14ae5e3e625cc74c0f2e0f03a1a0dca581036c374de70a51256e8eabb039084b37932c9a1e75a972351a4a963950a6764cdaea3747d14a4331c77ec2875d042fbf037357055d3ca8fe914c893d25e7e8bf3fddb9f564acf4af499a9daa79990963f9674c5a54bae1a103e1d05fdb0bc71915c4c5e6d0c574b2b179395ca6ae99b8ddfca30e932684c06349ecda09ddf6dac433133d3fc0aa2116a5bf971039bf1d38a1b813877ff0104fa588e1b8b9862492e067e1f4d02a4244cb07dfcb19794616e7efceda7cb1f2aaf7eda1846aabb2fd497a6ae70001f93f43120511d2740d13ed05634bbf707c0f6066159572c6aa4ba7e22bcae542a159b52fe2dbb9864a54a89d2bef3be9ff4d2e90b6e8a6a4d34f93deccf9081973eeb1682d400c0a68e1265c45757c00b3578b111e5ef3ffef6e2f2d90b621ad4a2673f559e61bd16978071e0f6d49bd51217c8087d82353e7b592aab5ad6649d1518fc327f557a55f280636f52079e4457a5f2379ca08a79c2bdf908c55d4253a13ecaf819ffe47ba102cf30cffa289c0c67d798f5b3468d40417ebc444c74fee36fdfff08c30d5d77e321fbaee240054e0e8d10d5031415651a17a88b268f6a1c007ec20695a2b535d35b4080ed317426bad449c03113c6c03a705ef82903db8f1095850f140a54a688310bfc2d1c81742e66e6c4cf06a76ad8443b978d959d7316cd0a2630ba9c37424b4a28bdc48c1e47773022c8c726c073515121010a434b7a8ee2cae2039071bd30d13f900df809e83f249e67416fb5b4a983a5689686a3ab5510e557c17c344b4bb3b8b45d641550b5e414105dc58ffddb6830bbb69c629aa04829a368813a89ef92f441eeb302587a589440fe0aa0117ff47cc4066a169da397b2a9bdf40dd461c42f5462539e97b62b44452f4a8a58b03c18c5951295f8593306c9024ca701687bacbec70cc0fc134c9c84b7255098c2320ffb2dc8bd1088b4f423a241d188a651fc6e1cccfaa83e12ab4a710221dfcb341b2cbf7ab976d1a954cadf416ab656bee83cab5436d6c3bbb05f86023f4697eb24961055d02b507384927dbb450a76b7bd816c746703e9686d14de84a3b5341c0740a5fd9438ecbf66d7e11a32d7b550138d9a5dd43c33a798192ae1f692dbfe71eb12d06b82a0d041892b2fec07244e1724e81a0a505316483716a9796940c2488804d5e308f4f604495c08d6d906139f9e8634e2d89a8b1988849cf8249d1c9bb306ac27e8c1f8902644b4af5aa8ab5cfb96fb81a85095833ece9597beffbeb4f11b40bfdb885862ab1c33a6dc8a41db93854f5f968aa075c260798319e68692f929371c31932f1ce13f692c7f2e8523585e156a3358423628303521590852bab4f1d38a66779f2d637b123d7bf6c210000d885a87608f6fa3c920be5d07d9d1b5c0b2a57a402a4d854ae9a792fcd62063a180b219ee555ce7e816f54085fd54e0b79f73e2a8ac54491057a858fa40d1f360f4250d10491249fd01751993193318ca2132aff2152bd0dc22409aa76fddda71c0a5e778174a36e012416a05deb3670a6b3810418a836ad57e233e6c8291f59f85ee6ad445b13acde108e2b0205a2dc1e22449b96ca3f7062b58248834eab75cdfe2b0d3aae3155481f36ca5a2b32a3ebff0459eeb2fa6cb42a831a52cb3a015e20f6a42043f61c374cf3e85f7b7713248f542586a19503cf48ebb8568dcf8edf7b4ecdf26d12ccc7c1ca2ca33ad7053663d6b29829cebf7d44805febe0ceb4aff8f79ecc3c8e11ad3877ff49bfe31d2bf583a250d35709cea509c04fd1127e32e832e229a441444fecd5f04d1a8f270db205b35d73a958288fe63e4331d17be8184dc27bcf641c455714c45f4237d732984dc3c19e93900c1546578a19355292f1d85509e34c789387d4127243ee8691ab753e465900c69b6ea09029c669bb4c29297530a79b6e8cc1f854a2897ca30902c2919bfd09d8fd19a077981e6bed1312053137c4e4158d05a4efa1d101e3253f3b1e65d4fd2db08c5ba1a3653ff937e007c9a76279eeb86a815b929d3c31265f3d767f1717c1b2687f06d19aa2809ce288bf48109fff7c5a270cca5009aa98a349ca4d12cba094bc115c8acd2bf161a0014fc85fa01e9e9fc3a4ea3c9c5ba427c6ea02a80700900a42f6fb22ddd2789b6b6f2107280d77f0d724ce26f17ef9f6df0bad25df8efe97f53f60fe5f5ca869c0344fea0e9e00c28293e3cf5a0e7e7d3a9eef98bd2e765ad419afea7690b39c6dfe9de45af5c3fee36dad961bb51ef36b2a376eb2c6b374eeb278dacf3b6f5be72913eeb1cbe6d9cd42f7a1bb43c2fe13eed41bdd358a92c1b6bf826fbd278438341bdf8122d32ff59a442175d15e8d291a540aa95c7621624c5df1eaf1c56f4eec743357d192b7f8738b060e073f3f41f676ac3af24bd87b103ab30908c1e6a2c6b4a6579b0e6afc4d6224de467ed92aafa93ab7f1a6fbfa77f6fbeae53c3371c44a4b6011e5faa91849f85e89d45b3516856eeb91546308df2ea06fea7f317727c146a0e74f56b6446e5b2d82ec56299ef7a7a25eb3179e805a9505395be2cab00cae296bec2431c0cbdfcd6ae6561059b4ec37e148cfad74192a2e6c8d96951faad2644dc37b2853a741d5a667f290795b5b8a4e3eda69cc6278f8ef298cf6b69cb327ff42e0baa9bdcd530db8c0f36b87a69d7996a13d7e8bb62d74eed82daf5b4d84b437565104f5666251e23d6414b11e82ab0c4e30d33830bbbaca1638c2f8d120fbda3eb42095cf9eefb15dcc14455fbbcdd3c8cc7d378828b484408ef3b7c9bdbf6e0f278b303b728f572063b3289753798d450f78a8693380953094ff343aab1a15743bd79341af87c0625d742a0acc23235f1ec3298f6e53e966814c4f11401615177995ba37ea21d48fdb9da3af77b49803b6201304b56f16d31eb53e86ff953c52c0fb06028e0e3a74b75da2c38c8c57a76512ebffae6e25525bbf8985d66e58fc1da9f97b81fb6a68295577494e05c2ea8dfaa261140663f9e4f009dc114b083c7afa26586e8688ff825ee21534760fe5ed27cfcb86289cd74f21b0ebd903b25b68c95f28add7a5e8204f195e232b8e0628cf0382397caad63b84ecb132de9e7199bdac5ceab89920f18e2ff8894c7d52f1461c0a214a4d04bfc86db5c25f1690ba9ba0ba93a0b11ec293723cd3985de2b67b4014ef592bfb262e89d389240f147206c3aecb02073a6a74e627516dca66a87c3c6ddb40c75fc1e4793f24a86e7702bc315bb99543cd15bd85048f5c9058c0eac2d56d97820b49b0cdfc8caf526b300d9d32631bfc27b9a6198cd32538aca19ada631e7a27e55ecb68fd8077c4cb9123b74fcd99c0cc23bbded6d7692d4f6366d1f70ff99110a4eee11afb05d87a6e5648a1ae78f6affacc06dcbb479b6aa0a67bef3d9f0a8996252c821b99cdcd6d94b8f37ce724d929b67f08d2227f726b4ea129d04e12e7445564fc4acb7f5fa7888ad88c2724e428f82be789a3f0d2044aa330086fd983b2cc2bd537d02901b12c61eeff313762a622b50b578f3b2f4cd4bde6ee7bde81f2f36ca6c1b91d18e76e527b335cdfbf39b9786aff5e3c92c9acc437b3ea8880558a9ed5b7e8b920ab11816272896a7211e710b4557688f3c70fcde2ba3241ec7b4148ea7b37b6d2013de8413da849fc04ca3efc301ce6a4008484034ff61ce8dfb7d1a5f920f28e9ac4fe934de97e623ba45de0de5590e8bddca31ce2f15b358c498e94de3c3e8c266635d17eddae3e65924ca3373674519f2a09a7005d26d009a078c931a29faf6a9151b68db035441b8e2adc295e563bfb1f17f83c09ca4f1285c1fc543456138214ac483b114e4c2c0c0d1ee012998f533183726eccac209c3059ef95be98f47052f490b59c7495f9f95372bd4327fc5661a443711d97969628b88233da3ef743ffceb6034abae9853274364f6b4d5a81b8e96ae9a5a382ff75f9cf0d1344fc2892e08a8efc6ff020354aaacda210612410d32c3df60cabf374171379766bfcafd7b4a99fa29ffe2368ec96deba7ddc98ddf2ed21f7e0f6e029eeacff5144f8947e02c138978c615a4f7a51e60ff369a5de328c4b713c5cf3736be4153a8f96850ea85d0efb0ff09a65c3c1991c8f8bf40a165e2948c6f7d3e49afa32bd92c1a18d57c1c9615f8f5a7498c02df958d36a9301f079ed3324e6f9ea696c1baed6b646356ad40295889a49555658157ce570ee3618e1f16d47e48c436e7bf80915cfe0524e2e9f4b2342cb1a2baa6c4737e9f1e51858b581858019c5c29242d80d53e6b3e0137fbd586c5424204ab06bbfb934fa66d0edf6c7618fee01a6e8a8abdcb8fbff997cf7cbd35fa77862ee5115a408ec08e3a6a29361ba0388c15167be5ffee10e68b672f62fe3d88219b4f2f5eb7ff1ba2469e354d4159b9867427396b3c68e20c0603955f1172110aa85ca4c545cefa602f49dff8df36e0d49ddc60e3f0d3401718c9ef299fe2e54eb9fe3fdf64a4b0c7b51866ff3fdce4af9b5785b6ebe3ca15924185a2c218e5317cb4443a6e5d16ca907b45d10b7bd217bd2caaf152c97ce292c446dd53361af92988527f73b5b45521551995a042dfbe914cde9d4403ec4e02a16e97fd529dd31a5eaec57adff3b3e93b5ad43a71b930a3f362e9bf98f94f0c1d15188cd88bfb2a9d24671d34341d829179c6eaf56385a8f3bb4788eb2f085f35208fd56178479936969f971e60e9ffbca292dbd902c215278057e5a106d2e99fa2233bb94547805265cd6678be8080bfd9add4b43edf28bd15668a29aef95347851f4b65de4a8111e000648361401c95bf41dd159796cbc933636d2acbc9864cb2ddffc3061bd08fdca6015eb6b8ac947276a4125f5f46d7ff2fb1c55b3f78a240e97aa3e8f63a9c9446617083bb07b87c054aeccfcca2960e327cb35942f82b6ce19864cf5aa810fef32645d68ee8456e4729b52b48c76a532f33570b6bd9e2d688a9b93cd622f3c7d21620a39c22275adcb58aa7f2fe41915296d084348154a75bc072c71fc9cae5bfae04cbc102f977b1aac7975355e554a91c006cfd430ddc52056fb91a280cea85b162de3e2a6f1ec57bca00e2a68a3dfb8ddf66c1501136eee35805a178fb043f7d68cf3e6faf942f15abc6c91d4dd26c10e254d25b7dd49e578ec2155e8b67c8b6ae4fbeaa6d451af022bfe0f63232303e0ea6785bee23e57f4607ea6a2474f72e8d6ef2c8eccff300ddaec201541eff62db4eac64a0c615c760e1310bdfac91ad50bdd3f89446619fc4d03de18f5ee6bf3207e40673f6cc3c77825e30d1e5bde5bca99c69236dfad2289ab2687bb52a5aa32034db2cf0c9d7130b1701d482814572515007bd88337467f7cd88285d7925d7d0bc79812de973fe78fef3d385c125d911cae2166f6f95557b54aff12a43360d1250bc32e4e4513f1b448945025d4b031cd0378b47e85cbdcfb974a5ccafffcf704f635548774d0a76b3e58225a36ee82b3d9b9f0b834d3ae9291830aeaa8cf2ded4c577b0b2d9582d2d2d9b2f0be64efed838a45259fd3bac9eee2e7c539ac31cd1d61eb2d3ffa7c480c31afe4bc7476a6b1c1a61f483274ac9e6b35f987e2fc4697161ad67e9581d9cadeb45e0ba5fcd1f59ae942f2695b2397945dac33df9f28b5700376d5f3c31b4cbca557d4853a505d6b72bdf0266fe2af9d5e72557ed9f4b8bf0cae2daa3b89fe8ee954e72f4ebe2e2bb65c70a39dd89060c333fd45753cfca6a69b1f2ca32cd7b717090c9582962d84b656169232763d1367a71b22d14077d5aa773c8fc7cb2d454a0430dce1dcd9d04b3ebf5713429e7f64f564bcff0bc452d5dbd4aa5b8a122885bcd03b32a53241c4fcb95e209953edd7c50adb50a55ae49ea8882ce21ae9422ff342f113e4b7bf5070f9c9fb8ce4ce54136b55418ca70671fd0f0979f4f2f1c78a96dfdbf77122db18d6d53dff0a25c5e0efc885b00ca5461257f464ed63e42bb7a4eb5ac04b05a9facd5cfce8e1bdd15e06acd9337301514b8f9ba5d3f692c824fcfce1733b70efedd38b4605bf861eb18a1dd239b17406fdaadf3b322bc7bd03afab0007cdd6a7517806f17218dfad102b0ad21d89e1e0c6198b85ada8745eadac171ebf0e75fce5b5deaf22f22e5a8415d689e7614301ec5c91ada1ebf6e9d5249f44b6957308197245d87b83552c09f48e872fbdfe6808ed68e825e385a3b699c9e23b875d66db64e554a3c19a2430531741ca054bcf9b9f6bad9383eea3454d3da2722a9dbf8b55b6f37ea987470deedea5229717989a285d4334a4993258dc01b3f6bba96ba801d374f7f1630ba7fe9c015c31d58e10483437139b6cd6cb5f4e3f73f957af7ecd783f6d5a2307dfca5f7c23c7feeda827b2aad94006439faf774ccfd7d30c61be5e2363a8347b31c946fa77f3f9cbd9096468e4dcb2f34c269aea833daeabee5ea94db12da40213f256b0fecc04669690a12291ce0fdb524bc0a4161ee874bdb1a4cffa1b6ae705bffb555fb126efe6e9d64cef9c87a91ba8e686bf6bfa0aafc1eefd7d215900edfd1940484a443d09f72501a61827f9b8393a303b6c3986f6ed6377389ffc27bfaca69497657b60e4f2a2f5c3696530ffe5559727f4397cd07022da61f1deec755128f0f01eb87b8bb3d4593ea299a5303ead2b0399995a7d5d592b7cbc2f3b36c154e241e92c270d40783522fe87fa2b38a520fbd148516f0e881b1c7215f39201717caa0e53bd9b2fc99cb5716f9f1e262e5f20ba57e9919384afdd6592ab34cf45bb488c80bf434f44814ca23a3af4662199bb7725951be38b8794f3fbf780afff155e1840c23f1065a12d06db3789202cb0255ed7969181bab6ee06025a5afe1d20552409da4a46a89aeb7a7a5b272721080f80c89b381c2398be15bc040388c2613dc338e26a5c36b20d7b0f2f4096d310fe7a3005d15198333d66ac93a4d9aaaf5b5cdcc3c15063358386a9fd8e0a74f68f894b723ea9e36157d5e428a82b67b10fa76035d013d210afa62e615cedc8fc78ecc94e3e2878b0d93c99fc0a21d73daf0c60564d958c8ac5c3231f4d54f1bcabb13d04b824703b370825296d6bc9075fd7798f6d436f5c9bafae09b923a5806bc8fe2dbb4049c65eff22f6f75eb3379e622d74af5b5d7c86c005a05cd1786c714537ef51256b2dc22f2c7a4e10a06f407cb38852a899b4dc4cd4a014b98578d4131efb7df16d08f794187972df9f89bbffe5db0f6677ded3fc8282b26239e94a8362cad18f3a8badd15c22c3495fd2f054a0203ba0410cd0ce33eec7909d78f48f693017bec5086bd4400b486592de1ae8dcc4256827a02a30b2c76b98596a330257a017a568b816a81e4d52575209504687f1ac377305dca957c15c0ba8bcd20e724b8948322fae82246150539bda56da1127199ac2da16d158b90aa0221455e4509cc2fa4259a6865f2c836573acb201ca14fb83051ec045a16c0aa1277ea0a3e3b90549b8d520a531ffd13d0859130996983d41fa73f61bf799d0b7d0bf4bca713a749780bed22ae02fd042d69a0381352a8a9e80ad6c5673133b172385ac503aa5900df2579d73fd6dfd05ff8fbbcb4c996e1f2fb76d89f83f47417b38a9fc925234461dd4ef7419e2e69902e908ec3969669ecd929dbfa04047a97fc83bd44830a638ecc67722f5fda62f4fe826a09eee071b92fa4452b9e1bbf90ae74745eae0e87ef104a44070dc24191dd775a5aafcbaf82aa5facc69f2c45c83afd3d85eef2f5ae0750ce6d2f74486e2c297b8a5e920da21bbbe5acba58f014a270a0cc843f2feb4bb1918ead06aaf7bfed60f1c29519b082b5f2c66fd3afeed867a4cee27c6951e544e686feb40584499693414d19a49bcfac4eb88b2cd0fb23881b99cd16e81eb880f64f5b478d1cb53b8813bd53a96e162cb7ffb2f87d5e522d60343fd75fa8cb20b989b0f6a889f0d77f4b241bbff592c2e8e5a863d19d0d6dea15bafaa8ce46aa9bd63a8a0b3116f7b264dc7aa50bbb4b3a829b806a9c481444133c6d476f3e3ff6929ffe7ea3f227757c05259d8fc8f1939b9e8ab3c9f006ee107fbe8028063bee6aba26077acb012a40731deb356d20fc3f0613f26638bb635f8e74702dee99fc58f2c26d852d63d0431a3068d2a0a9916d78691c031eb54b9bf4e9e33c5455d82995f549b58ec95d257ba5772a7642470d55975eb4057fd5f88dca5dbec195b4db43a0f2b7e3f26aa436550163b87c678c6141126f2f1cf875e736248e1d938e8030d30b0547fab36e9d6cb617fa522775a417f6033cdf02bd23c19517743da525835e603d59401ea873f3501996e861b5934e5e3412dc93fa6068509d6b2433697209ababa1c301521bc17abb9ff2a09ba60e7ecd65ac0b41c100a5c9bc3045a7e45b74089f913e88ca8f3e140bd15b22ae41eba3115595ca2458f872fd547165b9a000fd7310df824e75032de75e5110aae5df2cd35eaa28ae11c71facf767c9e867506121170340050c7ed667e40c0a46b39fcd051ce2abe939148884cb19a00d87e443ea65a9b6c9db6bb54de0487fda0fdae1920ff66bfcc17e0d3eb8373776b80668157f9a7371988358ab14a415fcea8cbc137a78b74c820bdee6d46989f8c85c4762e73edcc35ca68fc54fccfd79cd9130c32a7dbbce33868238c91c4cd5d972f4ea983f2e14a946343cbe8588c3bf4aecc67465852732860c9f5fdaf4870b46145faef35c72dc61b577a08b5731a1be63e010500455a959dc0207d29960025bcebe6c3ed1bcc61985b3e510ef3a0b72d5f31b33c0a734afe8c29561099a6d61bf5e4a578946639319f28b196230cc1ed0b3af650906d6125cc139872d37a7c2801bf6c3d3f016312dbaae789b688ae4b8dc32d3f017c69feb443ad913dcf8a9be1ba7337c63cbc6b84020f4c1de235bc6d1960ec123c6e009d4f0005ea9eb0b98256811b74f64871d9e11512496cb3f5e28cf82951f20f80ad6223f8124ff06bdb2e6f67b8311390c4f73267046d5e076eb3999237ffc46dee12eca4b13a68f44f3f4d2e8a2a7bdf86a7fc1c8245f47282bef56d53e5de163dee5a6ce4dcf2e2f7a766b11bf6d368a755d6c4c7535e5efb21f4da492af74e1c3325784aee28663baf184d9b849b4b9811b09b80d9190d6f4e2a9e0322c8e011b428d375a8895f982612bc22db01e437272b29085afab08804bf0c7428197384bc9476a4e37c8954427d57f29f6e9564d9416f0bca46c35a0d0e78506be125e589fb3d2aacdd70b6dd28b43a97f3fdc07da7a7ab9a46d2f1e51004f423dd997691bf3a972f46ab996e6e3f9bc536024e157eb254a2d1945d35e1c2403f2b6bf5c70d027466f439dfb301e8f83c9a0bcc27b5838c740ea91385a5d7204e7a8725d39fc2f93eb77f48ca4960bad699804a02986297a59a127159299da2feb92d3f627aaa3eb7899007e8fd8595059f0a83ce6c405258d6f2d44352af5de1dacf2855b05853ec98b730e06e4e281bd0e2f73f109a9bc4e409ae8f3ac6c0ca219b9837d69763a2855af60702047228ab7a311bf2b3a275dba5f6793045c8d79d33b42d4acf4af7ebf5fc8c6ce8855911154ff9e0050e8f4ae9095cd0664deb70c71659e82221df16a706b211137f4af70bd873699f3595c4806261efd4937957af1ecdaac24a1dadb249892252728fcdab84bf4e53a9a851d74264d5e2993700df31b3793c5094a3d79f1343f3badd38122f37b595af3343c9e28f5bff4522f047249f32927cca7164cd312f904fe6ab07c96a04024d84c5ccd63bf8995f059654e67a908dcc0d41a8de8f234a95234f3148a4cc93aa00830f78d521dd995114fb3db38f9c49bcd483dc85a1272f01dcdf08c1e0d59717f5a094785656809279db2d35a9ca00774c4c7320866926eb46956d0478f8eaa51d47a5076c86af68acbd61b4393e0261a06b338594729571f228b530c0228b2ff09290e77dca0e0d49e01c0f2fe5398ea76e281c2284e43cea529882265b3ee477c124d0da214a42f3a7a5899c49350bec7009f21ef7df1f473053f546787ebb33b76e39f3b17334709e8e3fd8f1165a033a78db5b552f6af6c6d8d4e9dd03ffd2a9d93f1813d9d937da31ffcc073324ab50768f6ca351e175da43f54ca9d46b7822f1f4059a05aa19bc3ce452f3b7c5b6fd70fbb8d3684cfea9dcefb56fb0882e557cfdf1cb70eeac7f841a7d1e9345ba710acbceab6eba71df800e3bdec7f3efef63f97d969e3fdc57ad63a3eba58afe06b26dab9ab3e1bcb75d157de8dff2a99d3b28d15d5623a93dac0c3283a80daf85f10faa7b041e7671b1707ff03713abda33641489d7cbdc82e7ae5eedbc669d638ee34b2e31679833c6bd4bbd9510bdf97898a1d61fc7e71c872cd800ff05626c05e6e988abf2be248e5fa87b05438565ddde07369aab8800b3ec6fa86de200a4afd608287c8ea5cdb08bf3e68e185d6524be92891fa4265fc3e1f4f4b686d51426f9aa577f576b37e70dce8948e9b3f374049cd15410e1a1f514aa75bef9e2f16a169814bf02ce1d9a3bcfc90ad283ff483f0667d7c0f602c6203df19a2d84638d9c093c49517f902500a3cf6d3d5a7688f380b9335563fd4eb450a46a2bc00bb89c25b0b9a04a3fb3fc342461601851215500f50113e4de27e3898270ba590696c11e8ac6f9644c3619814c1b9060f92785a289240f902c9ba610d649b81c4d359348e167a0aab9b202ae209066f8d8c2f827c4fd3ebf876ad1f8fe6e3499a07c27a0394fb0230df4a021192d27414a5b37c0293661e468d2ac080bf44120ca3ff9d67b27ce751412c5d3530ba7200a1df805b4702287d93be638460aa46a2cdc14d388d237464a841a3b8ffa9d86452b40199a05b4ec23c2e5934afc593b5c17c0ac2136f17ebb4abf96844cf34a46190f4af0d5cbd9eb5864a1b6017c84334fd299aaf8e41f84729141aa3c20e925a3deda0a33e2c8bb9374b326aea561983c93d54b4862bdbb574defb631e2691e81fb0281738bc83f14dd7603db23689676b2aeac8384ce2f974ad77bf368e07d155142662b4693fdccc36773f5426d19d87f3b391f8e39318c8a33b84311a7d11af9359128fd650bbfe4253a0bdb36b343ce87f21631f14d62f641920bd22b6d18ca198b730a28fcbcbb9060322ab153203d2a6f2c683109a65402ac83318d4fe1ad9fae2d222cfae72d5b9f3a851742712b75f4ba7c10c16ae6b505c80f9c4f41f07b3eb708cf7b920fde1be47133e71891609259793980af08638c1d73f98b7d9068509009d89f01dd0e18c36f2b047bc61a73fcc25e538602ea5c85f7389d7417abdacc009308b0732e01d9047708a02ca1ea2e84256f78c75675a3e630bf9bf6274bf6616b8265521cbddf84b15f6a22f9511028fbe9f7e91de1e4f99809028edc3aa319884f13cfd425ec35ebf40ec26790de40a8cf80d4aa661887651c8aed77ae1ec360ca1657c5e592824487bd12448eeff91a268df295f10645dc3e527d28de6034938e2473f4d81ba8efe5adcc3d7babedcd56b90ff4ac39a84b7b291a808b3d4c23a63add82c14a63eb947b50666d1ec8b88a6ea643f68676149e604d5a2a2cca42e2c6a07f6633a4b5f797a5950a9591fff2aad3a9a4ce2416fcdbe51ca35a5f7292861ba91cc9efba3798aaa35e06108b9d7e229e39852075a6671fb08a48939f735eeb4a32284930048e70a223300a6c0108deaf495c5a47de41e0561e2cc887bd768aaecce0a9d063db1a07d1650218bd308e099b106dac3f2d63fe63b5193fb83314e9de49199d311a8afae06417d9cb8369f223b4dbfba844755faa5062e2b18900c4a33b0948732f6a2a152c37929f3a5fcf982bf38d0a80ae1167704ec77745fd29fb1a5b8fdee91258254f5a7491427784f44e0fc31df8e833b1faf04fab85dfbd88f746fd3911327c37002dac008b32db210bd7bf0555c44378a3e5e681440b15587f1d8bfbbbb7bfc07aa7dc23eb8b857448bd8c2f20e8dd49f890d0bf5f807ef386c942f7a157eab041ffc4d9f1d355e374f1b6df5ac309a37bd0268e35de3b49bc97cadd363c89761e8f56b0c565e7142f3cd69abdda0afbab82753c97d563f7ed36a37bb6f4fecbbc5e7a75ce75176d268bf6964ddc6c9197fa98b74b489133abfe01e62a771780e657e80208055e6ac79faaef573a35da196bc6b36de63434eebc71ffed3e08f4f5bfe7bf8ace1775bfe41f3f4b8f5067b73dc3aac1fe75acf4fb87c113b8fcaf9fafc94b6371f95f9acdd3a6c1c9db78b8d588afaf3d3e62fe794f0fafcf818cd3731dc39ab779baa4f4dc0f5af85e210dfad76bdfde12b7bdd6d37dfbc0104171a07d99eb51b67c7f543d3aeff77071ddfde598a3881139bcf8d91c6e911fcc5fba927cdafa5214048bdd9feba6f3a8d2e7fc09be53494bc59aed06f37cba1139dd6715d858f811e8fb180b7adf75c0292037d74d83a3e3f39ede4123b5de8eb1bc645e3f40da045a7336e093f19fd6d74b29f1b1f3a1577e144af9dce71b3d3cd6570b79f775bdd25110a3a8f28c46cfc6a2ea3c841bda594f11b4b954ca701b25f378f1b581eded836f04ea3fd0ec84747b9fe3320e1eca07ef8f3f999866587752851130dc48e8ff194e3f40dc24eea1df5790b808dc39fed5718eb9c9f5800cd98258d3589c5d69a04d55c1317ed35b073c8941d358e1bf8fc54a373d86e1e40a0454f512da9582531b35711cdb174dc30250d283652815513554c345043987be828b796c3386fb3c6afc0429aa7d9ebe3f3cedbec0d107b3703441f1d43beb78de3332048f8a48b3f5d18056cd9f139106ff6ef16fcf9b9090373dcaa1f2123816e6247daad133348324d87794855e4d793e3ececbc9d1f57e86a47bde2b50483269187d944a97b8a2bc22f4c6ddb141ded1cd7df51224850a07408c0c49465216bcb3a30a287dd8c3fd1876a999aadf5f3eedb56bba3a3c05d8089e9865b2044f5301bb03dabc3b1eb1a70eb98f98a059cc2d01d9c77453d0f5273310ff7a608a531b73ca7588aa98a199489b5dba21944242666468d198d06b7ce1aa78620359049c746dbcd7740d26f6c066cc6d1f9b1a33c1a35f87ddbea741780f9ac54e72294278289bfafb74f9ba76abc32450cf049dbd20810c6998980d02f4e0100c1809d9f1de1d373407ac01ce9c8f1b8811f80e86963c2fbb74d9233cdd7742ad97ccd720a0f25cf4fbb4d9420dd36cc7eab2890607a856c593547c8a0eca081551fb64e4e9addac0d64839c13f3429d6730272d903824b65fa7402e52092aafd06785199d572c045164e281b2a2f902a1a248c6013d3a3f3b6e1e3231818cc23947fdc70e62fa41ab05ddc7d049eb0890704ac576cfdb740c7d0c2cfcbcceb31d93df83b60261d0a668fe0033828eb2de0673ace5374f81724f58eb6b76b266074b43e995950f1addf78dc66976dac2d6ea5853039a54c6e987acd33a61dd183f6afcda44f2e12c1c01a86a05e2edfc0c91d102b509abc2234a1c54f851df280847da40babfe20933fee0a8dad40c5868d66a67bfb64871ab13711c35df61c3895b20f4bc0d8cabeb13f9e808683df908d0c0099014aa2d9466429c70de3de4023040197480d269586010dfd5b1fbf543541c9ac818ea47472c8633a5ac67f50efc7f08ff1a3004dd2650f041e33570c6eca0d57d9b1d7c0029dc39ac1f359420b656072c76b3c3e31630126664f40b1a10fc9c1e35896e21d4013a460245ded63c3dc74ca7ef50b8a8d71b0fdbad4e073bdf01cc19d6a4031d087df0dfb6cedb14386962f60656a0e2a7e7288221a8a18dc3e33a0ad0c6ebfaf971178574fd43e388a434fc8196c33740024d88e10f08601368034fa0c7248fce812d34401b619382c62975f3288332ea67f8fb2b4cc3d7754c7bdde842b6d720d9badbfcb39f0102f11f4823442530990ce56366d60d2ccbdfd6df012bcade36dfbcf58129a212ff21c39ee67aa900d44d0a2b38af0433ad3fa296003faca6b7ce49749b2105f47bf8a78a7fb6f0cf36fed9c73f2d543a49f1440e76842d3a6ebcee66c74d6435a8c7d7dbf4d321e98d94f833fcc16cadf7b6dd2c107c50507d18dce66b1c0fd451fc431cea933a22e9a479041a06d202f727d74f05d2b1d651f37513ea545c2473e8f5c81232586ba040055243d993e90544c69e6ed40fb0810f302f8f0039881af8c72142da59bb71d844f603a1e6094cd2cc6a61a4a4646da27ca0d623fad3a1bfdc1c08be6ec0ac85190641406047eb25f0f3cb79b34d3a074821a0b27603ba729a81447adb55a257fd20f7c56ee7106287af03eb1b102a40546ab509bfd0e6d740c2b05cc37f8d5f0f1bdc6188a0046c6040093b0c02cedef8d0129c1118056e72e8bf468ee703d17708d639013c994c1d2517a9009cc2d06a9fd43fd6317822414d4719d9de002161ae63ccafd54f90702842412f568be7f353229ff35394bcf0e57907c402fcc58f80599d031661d161790c443e60da7bac01feb45978648c7b60b3d907204fff0458cbdbec3f8d760b46f4b852b9e8e18b6fe50a1a06f5a259368b26f7d16496f5e278447fc26092a5e3603442e8381c44f33186d4bf701826592f1a62f46a1407b36c10cf7ba31098ff3409fbe47b5781b2240c46d9008063fecdd4d9657615dd8583ac8cdb6f19fec113a48cee84cf82f19442d97d1824c0a0f1483fbbc18df700ebc56d5a8caa1036be378a7b14c04dfa8c6318e2a6539c830445cf4e04c3004142685586d6fd59591f3064646b90e1191f1fa00160743f849e8de7a359c4a91414595412e7d325f5e391b699cdcae37820841c6ae6288c2693f8e8203bb96f76ea27d949e3a405b3ecb0f32ec3b1269903aafbcf6f4187501b16af1b47a446e19ec049fb8dcf5f42e40c2952adc40f5079a0b9e94a500be505b85da42f24bdad77deba8b4226b82c03ab6f9c8796cdc04b910491f8fa71300ad37e980de9502805f24a27f3d188a82cb901920152046839bacaa22b4ac13fd115d412a4fd284272807f339fcdef332211fc2301411f0a3380186d4dd48f7f9b62e8260b474004776861ed0319007186a3418697447cdcec45081d9e65d7e15dc66624f8334bb211befc0aadbc0252e10a60420cfcab08687f14a38909fcdcc27c194d83413602321967689c49858ea34116f767f82f345d889301901a5f4dc9d0cb104e22b49cc9d4b5880cadbd13a83541a3d82cc182132a3845570fd042fa45077b9fc22c45ebe08c7de865c6959e0df9643294d1f773eacc7c82bd9ca33f5a4033e4ea8fa788ef5e9a05fd18fea480f36016f09f6ad60fa311fdc17231433f06fc26fdad2a4c7818d83045d422a788010d13c0c710ff55f18fb7994d23e8ee2dfe032c25c1200a2629fc4ea053d88d2c8d86c08ca0caf40fc03a56abed85b05183017110f8258ea18e3ffdd99f597f9e5012fc5292e13483e8ea8a023e7cc50135ba1406cc40e01effa1c725fc8dafc6f104868682b761f88943c89ea06b3324b00c0f307d00a71c9a4fa23baa760823ab89279e0302d00325968f54406dc200651d47fd244e43e8c300c29339a651bdf4971a33414c01ff8c07d47815a41efd310f12a0f34c15003ffe2cf6a96018430c536dd03dfdcb69f729c50dffa5c2f28c9842589f89984cba6f14863aa0da8caa024470141a9366880edf164a38c43f8808fc55c8347f10869c1f27bf1a53882a5cd3096ec6473777e311242007a077479124c2d4574600198641e85018ed1fd0bb50c6bec1327e3b166236cb407caa7fc7839d2c1e0d7cf4d0764b735307d2eb00ff79d03953b60d860335a1b17950d8f538483e65ca3a0d1a1326fda8077366769fa180a0c3b8cc1aadf911916680be623272e1e22731702b221fe640980560dcf18c8f5d33752ae6a3b578c6c7521ca63fc837580ea987a5893cd18c0ed81984821934824293591c0033f6af60feaa0c291634e0089f7dfac0a7fcdb003408244e9f5e0200ee843c5b7d948ec2709acde7d054fce3a7d7c062333e82c7b1ba1912f7c6d98ebf71423f77f0cbbda2bf40df681600938cac2b7cc5c2618a403b80dbcd06f86f10dea81f68d654075324b714a43b1e61211c7f0948c75c933e7111654e01acedf6538f00a4166014496adc4bd405ec34833034e77716ffbd24846937c20049ac14ad2030863655a3604ae1593c87b1a120da714534cc5c18ce7718b1cc9448c5a59928cc94a48be13290aae6575761c2d3e3ee1a6523ce4a761e684b40b24aefc73609071f26e284b4b410be1dc5d3d0282b68e995a5098c570f890e9112a5e49c077ed3086d21b3bbec1e3e1cb00a3454620b3428b6ce64c56992d1f13ee78952923951dac76b08830cefa220e344ee9570d2c44626589604009e4234898246e966521e6b3ea2f4369c48c87d69f0106022a8a399c8381fa336cae8e8dec4f269b9a4de605c88e7a2b23d4054a63918d6f563789c8b98fa548c0bc4482e452688767054c61675d0aca8ae2eaaaf46b3d59a2c83540c700d5c0767059abd64c110297956c11b183f5c9433bad94a776ab04e5a0ba4e8fb2340d70521dd53a79bbcabecaa4cddaa01c28ed0e35cf374b5543ffd007f8e8f574bb84bb55a3a6d751178b45a6ab5574bb0a8299e24f3f9331f26f373ce3efaa60696e1b3414dc63f20328329debbf1d1644f293e2669401a5730f2c7c032a7b008a2437e933e9fc548b1a4112a2b60990640e278fe18858a4ae019ca8505b721953ceeb95265556cf74c5c6e9ee094bdb7290604c2b40f6a43aa93505690d609820a66a3845e0309000b4d0c905666f4f28c065da15449afe733bcd76580585a042ac4354cd7419a0383e2e193c587818e604cd0980564883f4bee542ff2c9408ad7f1c0c0f0baaa0f0b466471b68f78370b18b6a98fb08a4286f487783e93092093266970456a880f4c1c754b930c6d8135a3ecba86010d48901a09390808a69eba8029ae0a4816c914164e456ca3c9084467f7303043f872da9fc9a4e93c1982ac0c4cb3c7519200050f6c910613c0a7275cbf862430c5d0afa40f12bf801db4c348118e6e36900e4c02df24f5ef2ce41e88379d429f4045b7d5d1f832960d8848c1459a2a85e43de853a3c0a4cc5117088701d06c3f00d909530c2d6f82d130267becac3c19f43eaef9973d724903014479c580010ff8c3ea1e868214ff32fd4e14ee3975e0a34748fe94c050c310d7306807459f22cb3175a1e7ccac7c0d693e7ca0ecce98f3f96447ac54ab899de33cf1fd297ae98512fcf44f4aed0740b64cbaac712390b4556cc61079ebc4507c0a4c84a288997e3cbdc75518dd9351534aa78577a0ec8a36d024502a6288db080a3540f7f803cba27486016d988861327f8c9334b379495fc699a29a4d148eb4f82094e244290c402d097062b9a1e08b8504e5abc60e0be9137e388dfbd7a9ed861925659485eb5d2054845cc7a458eaa851c10508f54a1b65f55717080a2d2148cd10034f3f4553fc0d71ca614ba20960989261593d32bc09a9e1137fe60bfd7e9ac4b318a49c4ac13be1ccfe392eaef34049a4a764643145a958378f2d2db359a1562334b04dc4dd046a3baeb9707187965a08889000b0b85e3464bac10ee07201f30190be2278c62346a4c1ab35b3e2202c5099b4dac04f07616f3ecc680a63eaa7f0de4e3736bd27ba82655da44b408f052439e8f61695896f88cf4750ac326f5333d9eec770cd4cafc8d268a9e24c56ed2b26111760461b99628c772c080063656201b6abc99f465a478016a6f3998e29a35fa2975811113e9d84b8464dc116922a26a2bed0e0db209990b6ca1b1c94451b1a4ab2062d80d7503c6df186117a69c070c25f91374d5c754a6287a500f07f832f9b6f1a0d4cf7691aa040a4765e7371661d99a2f73466847350126c14bf55cd8545949e15a8a04ff4d0d155639306330aaf4a4bd0626d024df77afcd318d5169c0708a1d9a248dbae4d917d28f581c64bb140bc510dea9d0f14a9b4842c1ab0bfefccae880b0b6498a357bc336542fe75845749ee99a5e14e13b0e470e0d96095e62973b1d4a76d473dd3d8db2a4f64a536b04339829032415b551c06ce67c23cfc1405fa52bc80f6f770550ccb78da02650e811a8d26170418d2b25b28a046036235225406b309c2952e1abaaaa49c1dabc238ddf8003500bfb9017ac05943ba050e5b6f3efaa4b12ab525c3487cbb7521808616906b8e4282d10ad368107aacf4d68751638afb7272b3496d5ef8b84b6461c0b0c2816e244f8d02d094adc080c0b9927483e8c637871742948577d328412d6898aadd3dd464f92f8bfa2bc0081f99a022350bee108208c6498b7b4014075ccb38cd099018d380d6e1aab957f8d6673ca58c349db56db0563c731b20540996471a8c566b29d21bc1c05d43a37ce6d80c35bb541ca3ed2d0ea6371c18e09667842b99007d5930505d81cc1575150ef00a13e05042cdd909c5d4da8bc36930e610dde5ca7d856c2d4d471c91f7a718c2a822a584014900f39a4340e124f17c61d1ae9266b87105ac42f5d65490dee38afb53862a056da9da1302bc9cce6e3e8a4041dbb9044bdf39307384b40055228e740c5522ef7bb03308439d3431e524fb843a35af3b70a2319f402e98cfa490e483bc23751cb8ca6820e03d5a491532ebb732150592d4a4950a671cf5a9593e620a045bd487a1e2838d118caf3ee5f844530c97b7c05633cd04f1744d8d1e4d143a07f1f18841adac181f02cc2b0eae0b899bd47554b402121a08d26c82553609c28d068aebd9add7ad08937204e3d7613055d51945573109d7e78657666ace0d67d7b4e44c712545ab2b5acce1d56e5cbba5b3f14cd48657a7ee7da3452308c40c2c5eb108180b8660516a338de253d43fe72414a15153050669a9d43d8aa2a2bb80017e5596865b35e21e27206f07d0668ea61a9560eab74b5e95a254605fdd5cb060bcc36e71c4502a4212a586d35a54adfe150c1738e37130a5ad6318e208a4026e3cabcff5ae22cd265858eac9c1801972045e17419cbb6b73dca2ea94e9dbf7090ccb7c826bd09b7024a07c954b6156806f23dcd69a8ee6c0a168210fa34a677ab263ae91d6cb015f6932d9340de703bd7f82ca084f06a4eabe9c8d82c3a9692821283a6032e389523e61e15b92ac12704b7544931b587293f2c189533c94c73668050866fb42a3a8cdb2cb04c0f5358792493159d3386d6988389d40aa8ea5d78435c5297231e2e434f94973f447012c63958c250037de88c2056223cd89d4335d195f18d6c28616af57c9581f8b1063fb33861466042c62384c9ed322566c0478712f8ae1b4332333d250e8dd123b5a8efd1305ba06dd93d454bd9132039eb778c2c6cdc5533a7f3c9fd1a2c43004558558752e0caa4ccc53c10cf85f1aab63285216a948bc179efa78e4a070aa689bb6f750508af81479c738c07d9570011ea38e6af1867a684a4b807e9099106d5dea182a853a1c4daf713dcf317adab75c7ef5cd5a853c0f462f163684f5b5a98d72a58c179dd69f65e5f567f095c8ae9f2774fba2310f49903b1af38e217a9cf94e78a551de7af26f7c706efaabdd14f52a65b6a855ae8ac89b90c3410d3fdc1024442338f0a8d4f3ee7cfa125613f9a6638bd8f3927967911b28bdeed834f19c43fe55c8598cde70701b3d9ad8a412d1a479d44197a4fbf5cfe3cdedbcc8d19b45bf3cd21dce4233f5ddb9dbdb5b74703e1b023bfd63b41e2743bc40976ea895c8063f51bbe81e4793c9c7bf5310ddaffb63b4265ca638a2b4fd174fc9c75d2e81b53d570abaa0c9c37377adf59a497838d14978f3dd0156fe361c29d6758023513fd4e3fc6ea24f551ca9eaa2f5bdabf5e883c0f509bf6db498c0e7b74b939985cedc890f604a2f681c49a078b81a184297267d5759f4068c0b3e04321ae67dd198e292abc78f5f30006ec1f0fc45523115be9684417322d70ec88da2e1da77daa3c5bfde9c1faea98badb8797013f4e7f331b979a00594f17833c3970194570ba5a3526c0ec299f20f423e814ea833202ad6c86c0a7ba45dfca800eda3938f0d6873485510fdf08de6349e277dbe938b4d4fa1f5f4dd6d305ab8b7ea60643c296f34a12eb9b6aa39017374be6e405736d002158da8f90e51eb3d1a6f2a68e1a642bb51efa075a7c9a6cc62e595047959c1949dbbc0a0af2318f3717d41a18d4682ea4a8f716ec737739aff5177691ac5db13ae1b15e5fa41abdd3597d2ea6fdeb41b6fd0705643d84c9d0c8335c858a71b40eb04af51e9a8b9cea501f97b706cab6d6ecba95b1106d03a6bb095af06505fcd253a3618b677ea7e3947b3e3fcad3ad71d3b035246b926fee1cc26d2152a7d27405d3641fb7e1e2e65e47f7c4e57aa902c1a64d04fb7510e5b671fecc5388b47033aac77ba22266e04089846b581195c5b0823dbc40db60da470914f5d233417fe34c20dc460dc4008e536762e636a04c43d41350485db57f928e2a4f3f065423d3216804393bf6b98bfcb75d4a81fe39510ba7da8ef3bf065449ea1761814800641872dba15c45ebb507146f5925b8ab9ab888c647d5d51a358330a8d601527f4eaf0b90d2bd49adb8d0ab1f27ee3a32f3b12f2965e7c3cc5cb1b8d43bc4d612e41d20d0ebe04a9ee3da2f170e3545c783869bda3cb40cdd71f34df03c6c67da72b86fa06a1e662996576e65221fe10c6c8569e2f7fa1493c57a66e94bdab1f9e9f9f286b7871f156a312c7ef1858acb919ee4e2b0c8048d1fbd2da7894226c5c2a22bc094f1b616a734b8538a14eecb449d72fffd33a6d8872f968529ae9e11fba97758428cce87294babaa5ef59759a27cde33a5fef5557a7d8e8dffaf534b6d46c216d4daac984da5ef3427eac6e806575be0d80a6d868dedbefe146bc34e75d6ac03b8e07ca72b760b51b8fb5dd6e38c3b31465bf4bb6bb68b79b91ff6558b8d3969edba058d9102318a1e58281b730e546c35065609d37a226abb97b6b486d2d9fd9d219ad9b3365424e90fe7552b00cc50d0058931abb6e61c03dd8c9a643b557ec53762c990f73e84c4a8571399404a38c9ddaf9d6803b6fcf2d2cb8a7f0096d82a3d12eb45e5b6ecf629f5b0b816bb2d706848fd8081a6d38f11a07fddee3199202a41a000d867cf029d9c76b5360f8e5d73a3365284cb48bc741432076da35b0144de731d4300af1586ae3e728a5ed9230036569165dddf351898ea0ddb38d19d37eb46536de42fcbcc5717c8596c172bb22d73eb41fecd31b8019501eb94acad859b7353284e5ca349c64136d95486020080422c1ce5326c5ac17df65fd28e9e35e761a0e33da85289abc05bd5e12de64bd240e0664957c158ca3d13d1d23d09f71909259ec273c9181c501c5d531290d844e23eb40429f620a840b00e22f64841fea22ac167c76969d71046d5e393488c6a90a32ed731837256d76b4be668ae73893bc32fa477242e8121b5c3258c338068c316e48765a68728ba6b768548b8f56c21f6d5bcb21b2ae058a4f7c28face84ee39c445519028a11f4e5534a9f26f4a06a91cbcbbd301f5797a7fff05635f6dd7bb60f14b336542c7567e1a2ab351c1edd5498e02287bea7c3465e36835f183c120c901e8f49d006cb320722800e500d63186f109c7535d0b40a2d4a717418bf029d316edd8a3452d8b22bdc57c1da4a6e9f6e096c0c63d591eac0d240a60aeb000e43d40078cb7746d02b413d39278446166cc7c929afaea79384c306dca838d6fcd229876370a506e5401763fcd8178bdcfbbb0903ce4333ca0fd00686e105e69203e38acc364e421d292f9281451a4980037987981afc1ca7fb0c888d2bc778fa6071cc72d54952c70a7070d25ddc81f80e04e223a62c9e2deefb9787a5d8008aa057631231b0cee202cd109fd48fe231f0fef911d00449d6060168ac6c876712b9d8d46868ab4f08bf994e3f15446e950c4bf43c98f15a8ea31eeebe5fa42823e8917e977aa4adae65776610b70a620f4c8a9ce5a8696c435403b233400fc4506389bdd1730ad73cca0d3a3c50f47291ff20cf99c4920646622c100082ba6c387fea70580cfc71854071eef14332f00c507063e9f2c94cda0e599717bff0b66d7c69c9a2da941dd2bb164a9d0532093fe6a095483d5124bb7c5ad0e69596db779e884d746e9846a304f7894259c8d203e012b90e0091a61c3300b90fab1a7d6224db90b7727aa9f1494efd0bf0255018495e3db65e978bbe5cf901a8a3acf62c1a08aaa13e165897c2c5256a789a43b68f3144b841931751b47d300b41535fcb0071a24de03d15f0ac5c71ecbb852eda99c5e5208530866c8791d0b0fadf2bd67868afd2f60058615a177e391ba1e03213e07261d909e8b30373539863598332a0cf84c5a11efe8b1c2e8d3a5619876c3088d240a5af4a8ef83a697b2d51e1a5482f8c4ca21acef0e2bab048b1028569fe72a36682c59a25e12e099270e0c9ee85ecdfffcf35e6756460f64cea08f79f90bd60e407e031a52b403f4f14a8552a57085c5c651a082a7d76cc565ad92f0b42c8e06d05ba03b104c4ae752365abc18001c0437408cb811194d40ee4733525a1e38ffa103cceb249e20ab03390485034689183027b5cae70b4468541b81ce30210d24a43b46a47a14ed25d239885eb221c03d55505106b964bab6c7267bc825439c3ff739285bc14b08144828c3ef7bf1e47750fe99adcffa531f4d598251748326f483d1224caf0d0a70561ad16811edfd14711b73de7484ffa007937018cf98d4f41130c0f9f4303517f77ceb2238fb94f4b46af629bc277e4fa0e4869a8c61b44c015146721d66688f4d2ec84805a7324963dcccf6b5df449fb416a61f3460f1f5793325c2c239651b5b1f73258c68756d45e5d4f6a6a8fb21a3bd562c0848544671ed15a231212cab54040fc5b3db00350ab4e2fd334c70ad3786c934e0fb0715ba721f88d1e409c3b2eebac79748d8b09283da0cd49f462c1ee9f6603030eb431c03328ba1fb187433c4322836ef46f505141566636a27df577792d81e5734489ff0d3086084d4153acf1e16006ca3140f7d7d25d827a6c7a978ce4f65057dbe67a9e2bc404fb18619db6b2b1634261b26cd7a20e70280cd88805a7ab8af706f3231dc305a03d752b19044cc5fad4b292ea61ce3225d0069f98a1163bb46fa17ac2fe842427497297d8c6d14f8c37ccd2487f80a0945159746cb716b25a05c3cf8fa608cf8301b759245589ff46a1c72eb453a19b2e9115be4e2bb02d29689089aadf160854db2884d3678ea19deafe27a75938f22fb27da164dbd2595dc968897842734cf60293b0ea6c8233305c14b5fc17028a368d7a5e3d446999f2c15650e3cadc61b323aae78b089e2dc53e119b07f4c822c6c4dd7a71b0cb43f2600fde9dc9fcdd1b8d244195505a059201124bcba0ad9645098960cc33f62fa2314258a426e6c1885ed5d338aaae53011190152fdba1ba02fb0ea883d5103260648216b5db59a823514de9c21dbc8790238506dbf4a9801f07578a29e69aacd80c89e2e0f438b103607629b9e9475261dc999d709fe9266a861a209116441c29da018f505f08e6d6984091d9b524ec9328cde46d186480b2a40b6a8064a080de475345b04a2045c84d23db06c517bec0dc9842d515598e82899a36eca3718f250ba9e096c2b11d410c5d2b20837fc12ec3899974633ec4e0e70af2caab46590b616d4d9ccc9b2ba6aafb105c43d536a65ca0cc5f06ea8f30ab514a3aac4f354df04a4a98a2658ca0e107daa335aa85f294f6d35dc18cee1445d8acc4570adcfd7830d3fd5cc2007d3424a80a43dbaa2689ba815356552cd324247fafceaa3896b83a64a39678cc4af3f4533f320181ac63c602903048786301f9d6f5f2d7ff5ebe3f3fff9eed296c73fc2e8e8ac5d7f73525f6e725468ac2de07f47b31f63df936f8030f02964703dab557813abd81f69fac070327b70bd86c5e3f6f1a12fd0f201f7d27c61c94371b6d8b9016d2f0f5f7cdd4997c05fe49f6e1209f957916442e1ed2a59bd7dcf855e93d155e186171b70b02778fe04544f9cec0b0938eb9d09204673f005c7e506e9cb70384d82a17a25e05f069f0cf49715b8e00cbd50a6b2352c14eaf65bbe48ec2ba2490fb82d67d2109ecbad6d817619d8eda2673c3af7372e7009e43a12ce1fdee68f6a73be68d5d1eb61ebf4f531bb4bd3c7abecd8551da3aa635269caa18e4ccbe28cbcdd3d27d793daddf332ff99d2b936fb287bd09377f6288fde4b723a3d7abbf36a8fea6ca2a26c4ad077e36bf2dd787c6cfc369e775bc65da671dd28bd36929346e396d19a5e28a78b8ff645694d048c63c5d78d769b479782c6c9a276abc80e14e9c41dddd3e1cff17907fd7dbdae378fb597c4bc7fc4bc6fc4e66be3e7f0e4a471d4c476b2afec23f86da22fbce30fc6ed61a78b2efac8f3650749850eda9b1de5b4b8f1413a36b47e05e94c1afe913b41e55350ba15d46e03e12f10227a094491639c059217d30cb0da79d819a0760248deffd0d1a43410e86666fcd1919e7231ab7ce649ef78e4038f763f3e818e8b3edef8e835636715bc21639c8ca5b076a6907ad126e367d332728385afc066b8e190e1bbd8997245c48b203caf061d0096ae5042ee04dd3834c3ba95cb323caf95d71293f8162f2aaa63656c29699de45e22e5351e1eeaa9737ce5024c1dadd30f39af53a7ecdae517b334b37252a7c6b0508bafd46977d9fa79320ef77e9f8f22dc70c243b5e40a41ea44d05c5e31677db47ffe85fd66c8bb5a828fe845f2d512f66db584a87070d1e2deb2da55cdc49a862e05a58814d26f0955ec11a87f8db716ec0a457cc497cbf90a968f2f7ad23e5d66d698e21a69ca4aa83a6ce07b4708611dd65c020c46ba6db899452e425023d4113a7a503b89ece7808e3294d9beba39cb9fd88b55b49e098c8b01dac625e75150cc2cc49bed74f587ae9193944fb5db37c8460f5de3e5137d19952ef2a2721ce2e93ffa58ca774aa8e3bcacc2ab11a108e6f683f4ed4ddc42344ea83826efe0322009430ca87ef0ea150d54559032898eaad33bcca08e1c35c99a9b02eaa611ed42d0dd5552cd611e44b842a1f014bd68d13e139ef30e7aa10c8ef811a982429ea73d794160fd19dd0bb02ae63815d702bea0002fd375a90c5fa8c72e63ff5fce5bddc651a97904a204ddb9b6a152e0acf986602156d1bdbcd4afdd5e16555edd6ca31e8dd3c1649d9dcac557337a30466d87930abb1ea4537eff659c7afbdedee6263dc2947a7bfb3bdb5b2abcbfbfb557d5e1da4e75578777f777776cfebd7d1ddededadf53e1dae6d6960d6f1bf8fedefee6b6096fededd9baf64df9fbb56acde4a955ab36cfae0eefeded6e9a767ad53d4fe4d931f03d1bdedbda35eddcdddc37e5efef6d1bf8cee6d68e68cf9ea9abb6a5f3ec6f6fd53cd3f7ddeabee963b526eadd1438d9a57ef57abb5b507cd5e2c1ab29f8dede16d74b79aab26dfb36ffdeb6c48fc1dba6b76bf2d7f665fb6d9b6bb68ffbd51d3b16d5bdcd5d8b932d43037b3b558bcfcd1d59a6698f67c702e1bbb63da68f38bc5b260ca364c76e8b68a0dfafee6fee317e286ce90471bb6ddbb025fabbbf6f69c3d2e1deaea90bf2d42c6eabb54d43b7d033db77cf8eefaec1338c97c521e0dcf67db32ac6c58c35f4714b94bf6bdabc0903a3f3d4f677547b76bccdddea8e858b7a6b765c766b5b764cb72dfef76ab52d436f3b76ce6e43a3ed5cabd5ec1ccccd1d3147f62dde766c9b6bdb260fd0c3b698cb960fec8ab1deabed89f6d7f6edd86d09ba35730428c0b40df2dbf1aac208089e63e9d6f6657f7f7b53b467c7e6878137e56c7b622e9b7e01ed55053d58fe06fd35f4b953336d009cec6dda71ac8afe6e57c51cd9b2bc655bb47957f4c58677051dc27c17f36b5bd0bc2d7f47e01606c3d2c6be9cd7b53dc3c4ab7bdba6506fdb302964dcdb8250361911b5ad6dcf7612389c1dbc1d3b60f06dd5200e789f250e26149eb4ccd015720d01c1185986b823dab3bdb365f35b6607750904f1e454e5efd8092698d1debe1dc8bd1d4f0821c934b785e0a98a09b92d04ccae983c56b06d5655bfa0695b5220d909b0bbb76d27d8666e22556dfb993814b39302527c6b071578b8654c3bdbdb62c2d4c4c0d72ca11be2003adcb54459dbd9b563bd2d18fd66cd10cdeefeb6a8cc93e16dc12dd4eca9ed6edbd90c4dd81488b39c150678d34ab6cd9aa56e6fcb2265af66259e9ccda63d403446238061f4b645fe3dc115b6846416e51b2240c96c38e5aee759446f1a8904b3dc6a10bb826301226a967b6d0beeb55b13da8d909c5b1a57a0ffec89fcfb82439872a0ae9aa877c74eaa7d1e600a5b4d07b9ac953635a33d011108c9b66b2733e4dfb592cae2616bbbb667716bb94b6ddb1022e6a99abeecef8a3c48d08a80f66b9b42fc799e98c122bc239122b88bc853ab6e0975c80e7c75572062dbaa495b9673ecaa99c470a9e6d584eab263cbd917835ddb952aa86ddbbe250210c77b82d55b6eb4254592255c9024526d16e27877cbccc84d4f84adaa53132a0ae0cdaa4fdb554bdc3bbb362c5417a0132baaf67204b769278355c940aa886f772d71ec6fef5ace67d5861a8d9d1af8dabe5833ec5645e7b7c58c9748d913b3645b88867d2b0bf776362de23615db84c2b76a56d7b77a3034d4b071d4ff2c1bdcdb97ec5d0caa9dfd7b5b16e99b9e65e300dfb2035c1522c62214f4ef4d31f06280378578da12bad19e60e3bbfba2fc9a4174755b88e37d494c5617f1aa96cbee6c590e5df36aa26d9ed5216a8240b548057c6e6f0a3cd835c9be10a3bb9b3b9b42ffa889895d133aa29d84fb5541acfb62ade849b165f1b06545edf6767553d46b75cdea9e98183b5b42ffde157422f4a74dab02ed6bbcc182d0960feb9f1d812b4fac7b77055d55c538da7a776b963ef7377785ca61c2a89bcaf6083ad991baa96dc39654bd2c33dadcdcf2043d7b4275b1faeea615f7802b3ba7b6acde0cc240e056d0b06cc3f6a65dd3ee6c0989b42f98a95de7c3b2ba2ad60616274aff560c6edb8e855df300fd6f0a86bb25d60c624f617b5bac97ec5cdef3c45cb6ea1c6807621db829caa9099cd7a4debc23d6ccdb627db825d62d35d19e1d81674fcc23315f3cc1b82ddfdbdeaaca6f059fd9971a939e9bdb3b163fd81741575290d839b8e3e9f90e9269db1338b1fc796fdff2e73d31c76b354f337a988d9e50953dbb36b3eb6ae4750287563b833688b5d3ae102a3541ff42a06e71bf7abdadeaee8e5565773dc13fb7acb602346f35c4edaae4699657d434ed91ba2ed79042cddeb482adba25e7e08e2847f05881cfaa5da302cd50db0683fd6a758fcb57614f689a8277d9751dd0a458d7794233dd14b4b12bdab32b04f6aee0b7bb62cfc22e853637b7a5365a15cb04cb2bf62ccd7bdb760f687f57cccdbd9ad02e77f705ce77040f17e3be2ff25b3e0ceb5ea1ad8b255ecd134b95aae0097b42d992727c47f0ea1d89b77db1e41473646b53ac4ec4d2755fe818765ec09241cc7d4be7301704ff147a42cde010f7716a4296ed89e5f0b6d8fb930aeeb699ef6a0f4829b57b766e8af68bbdbcddfd7dc17376851cdf15e56c897d2eabbc7abb625e085d0bf876cdd2cf8e90f576ef6353ec0302fdd83d1db9df21783e2a1682b77b62ab412c0cb6244fb33ac316d046e1e0be6af6b8d5f9fbd1119f121fb6cef154939ff6c5472bbbf83a997adeb04e4f27d74ff175417e50d704f0d3461bf7de0ff9b54603360f78e26b45028eafb6350f1b8e1c7882ae7fed2572fd2c321e14b745f251b37edc7a930374f869d3c611bf422a4ff0315c11999726eb4bc390e126482aafd8709f5f48c10ced461d8ff50fce8f7fa6637c3429b04f311ee23374e26bbc2d8a60e3e90023e8eb40ff2ea24183a188ce879393069eea7262c6af8416a0f49cb37a1e914268816002cbbb0ae967e7ea137e37912d9b43f5a38e3275b02ac2c61db5f5124026cdfc4699ba6340c9e439c0867054e9194602a161070588b060f89437036bc780d7b2e9e9eec5142249f85b2014baa54db600e6949e40fa427ee390472707210f0ae67e3704e8c23e9ae2d1db6ce8e60b81d46cb423e0c732864930bdbe170f9e41f08d762a2229970c0e30b1457fe8fe393903a0df16cd8a034401db24a047f5284cd03cee9e7c54f3e956f7033df64a2f6fd21f4579d0995e34e4c7e6e805b7caab883cd8a27102bd6faadf2defd2ec56ef9ce213cbea47bc944a0e08702a73cb3be707f8f2f499c2acca8ccfffe133a6ff6e1da8dbf5f8881a3eabc6cda1a6545ee1bd13c4097a36581ca5095da49ea847e9f8755304f3e55efc13a1d13d3dd94e1352bdfc5b982d0a5a9813eaa177aa88468d6c2c349a5be75da07c0cbc235a3a6bf3c4544f36dbd062753661291be3471829f08e47881d37604038a0b133329ff0bed5fe991f08b1ee9c3bfc1c71fe1bb656a200cd057e4cb7f3f6bc7bd47a8f196818c44c667f0534d794f9631410a1a8f46eeb8cde0cfe205e0e16f647643202bfec36d95aa963927eaa97038a44e809d48e81e2bba418a119fdae8e887f5f6f76795669ab13fda831bec1685fd0fdf5e4989e10469f1cf4b02e3ecea8cafb1510e2d38394d25f85f14e92039ef11bc34cdbe8292497dae9344e0e8e3fe4610b7465d20eda30a86d7e6e9a5e289589799928ddd074f1e1c91cacdda0f94d2fe90ae887b36e0bb8c4d95baafcacdd7a077ca02df3688329178c7c161d11ffd74f79ea99e7cadb38a50a1933858e2a732c09028a33d2ccc0f03df2020b71a52ba74a32493f5b4b5e64ba4aacbb52f35673f9347c555b3dc9b8e0c0e7b17678fcd67a33d7b8a2783670e8073f398dfe60648a7cbd71a1058574f24b93ff5abf0d2b81d0dcf31ca0dd386975f37ce800fac2e243e4eab4cedb947ad66ae508ac48feedd6799e56d17b8e8ceb07e10584dedfd594b63ce5211a54cdcf8124efb0d0e533b1f3e1b475fae14482f246930edb48c7b0a9a744737e90641c3933faeb1112dda401873228e227409139735f8b0e9304c8c590749a654706b2800295e26245da13538e1159f74c9a0d6988644206b69405159c3a2d421e18fac59c0ee6a33319d6a30082f168889bed14522dd3311ea71c2c67314db387c514c16e0a4eac2ca4f0b5662d2a5a602c1a5a642b0abe84a938520d4bd16982a128906627da51d643ccc4e429b212e1714bc6ce25a529269273c225e24506e2842fa721cb3c3440af5c054872130d5b36912c2791b6e5226ab888700566638a8308db731b73700f95f210ef30ce035d9cc2245a5661410b5d3449d295a180bb9888f15498e322062a9986052ee51a4527870ed00363eec8ea601c3a97601406b4c00bac574507337024eaf9ec4812eca0e8ab51808a05688ea0e3059660c0459ea01396300557b2e10a2651b0050dd37cc1f8877c8831d84c8633bcc115d569abed4e557c433a9fcc45cf73d4659885754859e016ee840748c7f28b026439ea97cf23cd1a0ade2f0544b1031dd5572e54d4c11074d2728ea00ce5eb071dc87dd822f77dc01a5a873ffb27ada38688761b4c8c67673eae9d30d8396c36e997694e710da0833398ded435e82d74d26f1ed9884ceed6e9c3ee296e06d5dfd1e65bf3b4defee0d30657e7fca4c45b6174c946ad7e0f1bcd63a59686c9ec2cc19bb8b37b15e5aa0edfd272107f8c3eae0a14411f3428daadaa1f373aac32d2ae17e045341260fe71e3f40dad1f31a27acf3754f219f199769f57a747bc0f76ca78ce653bedd69bf49cbb0e1ae512e230fbfde6e9eb164775975b9c9dc3e7a7e6d73f68b27e0e5ccb7fd338f561457f44fb49fa3a4c1b3d5376ba0a2fc53b328b0fdff3761a2d80cf49c229eee8e3a6c661f3ac7ecc4569b8e85911c4aa0af23f8d3e444cfd487dde386abe7ead820aa718441e43412af240d576a0d17e747078c8fb7fd8e7830f8aaa24e8909166e2856488e21d24c7872aa5f8fd1950f6d9dbb6d24b1ba075d3a601882a400b20fc67da6c7cad2ed2d02ee242e30c48156ee285e45c5d8d761b860288dd4614e736f1d3f39303debfa4a8e4c10ce9e0a6110b5f05505b1b24bd7074689f1229e175f3b8c1e856211a400a2be46398788bcdc6d162baa00a84c9e8718bb73d5bed937ad776e7356055edc0e8a09e165a2a2a512a0b53298aeb8a94378dae8f3577bab0a23af1c54e97af6699ca4429274d92e096ea2105c04db5b50931b51f05a1f3eea18e604f9913e920e3e56dbde31f1dd40f0f1be4be14a3d0ae938e7ff041630a606f0f3e748990deb6f4fca490ca419bb4be9a9d268e37e74ca4d32036432c0ed9ace83fc18a71e8fa316de0021929b28170ebe0dfc0a450d3e5d23a7ea7fd0e65a9c8a47adcec288c60e004e80aa7e2cfe1bdffe69cda8f410e344c4ff1061bfd90e754d284e0afb7c9bf4dc91a8f5befa9be63107dc8c34eea488027245de0af8f03f80ea65cebbd72064c9bc1a7c45a4e15cf3f6dbca716c02f3be5457592215dde0ac42ed0b63777dc8735215dcce3cd5d86d1072aacfaa1622c44f340d1853c802610ee28e33c63b54501687f5c85a13fbcd78a1110d5b4bddc04d400afb58ccf80b48e078cb2a319e75930bb3e0d68d7f50c0498927948744cd948666728abcf148acfce0f40bb7c0b24cbca8e2ee7fd111ee3f0190b44145f82085d8c51b9daf5a3669dcaa44b84c856284cdbc68a21c2b43b52d3acdd0091fd8eb7c1f1ae6cf3cdb9da14a76bb22aa41703b4cb4dec8f2e1ed266f63997dc7a6ff91d44a4046c2b9251c343e3971faace21a0d717471fdc7131764a8fd79250457319ba3a0d660bfe44c3c9c17d3dbd1fff4c27131c473d84f250166c3c8d06ed36e3ef2fc7fe3b504cead07859f82f24183abf9c33f6e950c45713afd33d6abcd3bf6714a06674cf4984e2b10a20805811eb381d6ca8420305351628d211091d9df2bed93d7ccbb74831fa81263d6a0af998c85150e72093628ef6ab6ee344e39395bd2eaefc50c37bdfc0e1ed10e8d7ee19f50743efd474edb6166a541ab17f0a6cfd18c804670a2e60b89f14529dc1b068d9f969f390b55971b27046ad528db3e892d882614264bf0b93e8ea1e07371c98e1cd032d0ddc8d47fc573bf0947ea93e3480497dc141a0a25073e52c4e82fec8e1b462f26a05fd473cfafe1b5d77dbc00debdec7cdb5dae5b38bf55714f821bb5867480552c38fcfd62e5fa9f8ab8f5783cb571b11df8efba6f4c78abcde665a66eeb7e193b378735625d105377ec462b071e0d5b63677fd4d6f839d08ad7b9bd58d9eb75ddddc14efb268df48a9ef6d6e6ee1d57ffd8084056fbbc13b6ef0ae1bbce706efbbc13527d8db7480a13f9e1b5c7583b7dce06d3778c70dde7583f7dce07d37b8e6042fe9a5e7eea5e7eea5e7eae5961b555b6e546dbb736f2fcdbde5066fbbc13b6ef0ae1bbce706efbbc13527d889d81d772f77dcbddc71f772c7ddcb1d772f77dcbddc71f772c7ddcb1d772f7796f5d273f7d2493ebb6e9cecba71b2ebc6c9ae1b27bb6e9cecba71b2ebc6c9ae1b27bb6e9cecba71b2ebc6c9ee329c78ee5e7aee5e7aee5e7aae5eeeb9f1bde7c6f79e1bdf7b6e7cefbbcbde7797bdef2e7b7f69d93b6ef0ae1bbce706efbbc13527d83996fbeeb1dc778fe5be7b2cf7dd63b9ef1ecb7df75802d8dd4bcfdd4bcfddcbaabb9755772fabee5e56ddbdacba7b5975f7b2eaee65d5ddcbaaab9735370dd6dc345873d360cd4d8335370dd6dc345873d360cd4d8335370dd6dc345873d360cd4d8335370dd6dc345873d360cd4d8335370dd6dc345873d360cd4d8335370d82ceb6b90c5e5d025fa26e2ed33797299ccb344e3dd2f2593dd11801db72c0b61db01d076cd701db73c0f61db0da22cc529680790e98a31f9ea31f9ea31f9ea31f9ea31f9ea31f9ea31f9ea31f55473faa8e7e541dfda83afa5175f4a3eae847d5d18faaa31f55473faad48f7f455e156dd9bd6589fbde2e5fe0b2895b8ede6e397abbe5e8ed96a3b75b8ede6e397abbe5e8ed96a3b75b8ede6e39466ddbd18f6d473fb61dfdd876f463dbd18f6d473fb61dfdd876f463dbd18f6d473f761cfdd871b479c7d1e61d479b771c6dde71b479c7d1e61d479b771c6dde75b479d781fb5d473f761dfdd875f463d7d18f5d473f761dfdd875f463d7d18f3d473ff61cfdd873f463cfd18f3d473ff61cfdd873f463cfd18f3d473ff61cfdd877f463dfd18f7d473ff61dfdd877f463dfd18f7d473ff61dfdd877f463dfd18f9aa31f35473f6a8e7ed41cfda839fa5173f4a3e6e847cdd18f9aa31fb5c57e804077c03c07acea806d3960db0ed88e03b6eb80ed3960fb0e98a31f0e09ef3924bce790f09e43c27b0e09ef3924bce790f09e43c27b0e09ef3924bce790f09e43c27b0e09ef3924bce790f09e43c27b0e09ef3924bce790f05ed5d10f87ecf61cb2db73c86ecf21bb3d87ecf61cb2db73c869cf21a73d879cf61c72da73c869cf21a73d879cf61c72da73c869cf21a73d879cf61c72da73c869cf21a7bd1d473f1cb2db73c86ecf21bb3d87ecf61cb2db63d9fdaf149dc75f55958f81e5c9b50793f9c6a9487620c4a104780e25c07328019e4309f01c4a80e750023c8712e0399400cfa104780e25c07328019e4309f01c4a80e750023c8712e0399400cfa104780e25c07328019e4309f01c4a80e710ee9e43b87b0ee1ee3984bbe710ee9e43b87b0ea1ed3984b6e710da9e43687b0ea1ed3984b6e710da9e43407b0e015d7508e8aa4318571dc2b8ea10c6558730ae3a8471d5218cab0e615c7508e3aa4318571dc2b8ea10c6558730ae3a8471d5218cab0e615c7508e3aa4318571dc2b8ea10c6558730ae3a8471d5218cab0e615c7508e3aa4318571dc2b8ea10c655258c176e389b63cebc8b71fdb8f88366c8cd93c669c138f8a8d9f9b968a0f908d35e8a17cc75ff5d7f57cf59fbc22f9abbfc876e2c17ec431da96c31ec78b25982cebbca02cd5a011ffecc465b0f99fe02ec75336f906b2d770f5b39cbe605cb5d737bb1d37873d238cd1be7f253db3950d1009b2d0f1e32ae356f723f68715bc0f712035cf632cf26b0adc3a6e3d691b9d0c4f7dfd57bf4b9dbd5e6a21e9355f1961f9bd2e42ffeb58e15861f7b830f06f2e75c92204f016c370e8106f277f604d12ebf0de7baff26e9d60015e1da4b72cd03f2249fbb26e722e687920d352fbc329e83197a16f7e734411741689fde3acab5ebac8873e7fd3a4bfdf2ee9cbaeabb70d571f1ee9c63023c7871cecc090b5b68e8a3aeb5c979f13597dd30eec0d6923b70f6ae7eb3b374d2e86b63664288db663c1d1e736d4cd1bc4e10146f4096de0dc852fb632f63493a572045e5fab696a171735fcb45e1cb130d7dab2c82ba35c4d0b6b9c6a5297bf9dd2d4baaf66656815097dccc7210a9b9486508f2b137a124e13dee76549ee41eba32a51eecc01e1d9315daeb63b4bfe5c60bea9160dd3eed58c1f847c0db10225dfb29386d69267f76ce90b6b1972cded75757f0357ac5cd7be5ed413d7ad17965800af71cc95fdcd777eba5795bd0a3c70efbb17933339eccae29420f98f7afa3d1804dd5e811fb7496e820fd46f4c2fa2cd03f557e8400dd96e88700c985c9c4e727ebd99f493041f712fd20194493001ff8a3588ae672fd30c2cad037c32ca6e7162886b5e26365f8ac148354649ac4bda017e9421494bd84e8271d28482f1652683c8d5386e1c3831cb861633d7c155dfdf8a90e7ca20047d36bfa994f38b77aa8dc84d563e5fdf918fdf27387ec33e5a188d2eb7c3395fd06bd98f4c4937e83b01f0f7440b7971f09e0c118849334f49360f28922d3d935fdc21a1e7fe7542c3fa7f0b1d7bf1cc53d8cd31319132e38bca32cf8a82ba145856e82d11c93afc260860f1310ae7584b1aa63266b945047e9d74247718ca8a437e4667fa2b7127ade88b2d2d3a35c3605d1e7bf0d72c235b40834ea5b08469368d60fa614c2673804513200dfb90df1810386108de20b64fc1802905d8fdc458c8221fda536d0b31e83e05e0775c3476130e01fce466f7d60801ec49c4c6e46f430663f18c9211cc55434befe81bf532e63964448f1e3e0138c150dcd38b8c3bfe120a22933a6f9338e07f417679eaf1e3441972401573661f29f84b7bef29831c15773b9ed93518a4f6a24f88e3810cb08df6e2c80099d12a06625822c6a31a6db0f617c125141e90d127291c24f88f2eb261418cfe241aa9f7ed590fbb184dca8bfc819603ce9f14608e2abbef813267d9c0e8a925534a21714698e0908bead8910d548faa5d7f4982e7371bf77efe7f9cb3401a4eb874d6d841ef3cb4306e12c88e8255e01ccf31991a02ac747782733200f1b51c19b289e6361aa8b4494c80d9370ca3806229fc540ee3a3851612218f86b12e93d1c5f13b88ae2a3d16c34ac00fc800cc7131fdde28ce2a97aedb90f9c423d1093543360d477f8e73e4befeeb2f41e7fef2bf425bec83808b914533e3e58c32e62ec9c22163d8b952f1d159be828cf8344cd83b44f6240ce1bf5f4b5607d8ccf341a4ee847fd455a510fe6901b19421cbf6308c2251e47c1c857cc85a1f87406847a0670954fff94e6e363668b2a729b4fc4d7b06f837b3f98009737d01965f255b325681a444020452862743a7f65c0b76962ab190cc21b1350324545945031e39a92184def53fdfa2c12bb9a4f0a8a7e8c546cd09b27d190980246159ff7e7b3be820ce7c42030888f0e990830d56038b41153869264f8e2b11849d601e0efb5f2ec430938de30ec088a7d7669e60fe2798f18890591bf2b8628d2c1108bad59ac65278624b781b8c942131f10a1334e6c39135b90215b6c16881a7c6dd67c92eb8d88b2f802488eb1d1a38023d530146df44b744e4f1ae3ef9fbef158c6489e4f9406c5ef72b20cd3fc155fa7563f21f1112d92ac9621740c76a34413f346bd9f8b73efdaefcdf1316fbe5bc00308813e3e06a482f828fd8c3b41d1315a1ee9885289200cda864d40e19aaa303de1a38211ffd273a41c4ce258e54b4300730b2906ed1d7143214aaf09a9a07e07ddbec4b9ecb2c36a49d1ef6a89b8d16a49510c05262aa44706833012f601ca089f0e1df41efb42a67a16b3f83ea52d45dc67e8a7ebc12dfc1b07c0c7e83e439d821dca7d74b03122e567e328bc09911f276f8022427ecdc7bcf6f8cb3cc6f78fda73505b3bf44214ee3c1e22bf06f0110ca1857640782c02a9b65f60342259c239d23a475bea3de214e16d7c8aeb1d52d9c2278bdb9ba2dfbcc1c96f5865fc7e96518ae9852b587bf4ee33582664839084f6ed7548da997eae8d1e048bf0a928d43d6f987ae284de669bc4337a7a38e3a7de70caa5fcb6b178aaf5e9ff03608748da");}elseif($o==="jquery-min.js"){header("Content-Type: text/javascript; charset=utf-8");echo
fun_adm_lzw_decompress("78daddbd7977e346922ffaff7c0a115d2303c5144595edbed3a0213cbb5c6edbedadbbca6d7b28da071b17899b48aa2459e47cf617bf88cc446261957be6bef3eeb9ee2e1148e4be44c61ee7cf3b27d77fbf2b368f276f2f7a1717bd0f4ff6277e169cbce8f73f56f4f7e263f3fd8bd5dd324f76b3d5529d7cb5cc7a94f1fa165f7aabcde47c3ecb8ae5b638797efe6f9df1dd32433e3f5169f0e4add2eb22db7951b47b5c17abf1c96295dfcd8bd3d3231f7ac5c37ab5d96de3ea6b94f4f25576b72896bb38a59a3bfd202c1b0a9e6663bf53660976d3cdeafe6459dc9fbcda6c561bdfd3a3d814b777b34db13d494eee67cb9cf2dccf76537a3325bd60b02976779be509b5121c42feeb7b34f6623c5b16b9d731dd95f2b1fc84bbe96cabaa237f9b6c4eb26838527994f5b6982155d053b65a66c94e8de9717db79daa093d501dc5c3f763358d9e0e6a164d7bbbd5ebdd66b69ca86b7a9926dbefef973f6c56eb62b37b5437c8348f3c59304f2da26abbbaff18fca2375e52e5b31d7f39a86574feebf06a7b75f7c5ab2fbeb87af8b43feaee6befcfce276a45d9ce16dbb373b58ececffce1559e9cfd3e0ace273375dbde584a3dfe714dfd7b996c0b3f380cd072b4e8ad37abdd0a13163dc96e09e78a2660bbdbdc65bbd5265ca86d312ff8d1f3d4bc584e76d3b0af76ab4f379be4b15c61db50decb92f9dcc774d37826c5aeb20bccd0efe6f34e94c4fdcb2446ce61d2c54f4fea1f8592360aab9561355eef92eca652255631a5912c8acda4e0ac3d67007ea09272c7d0708bb7dff3b68e7843a4c8bb2b1ee4d5bca8f4a08a249b86ad53b9e8e11bb7a464d516c9ba6d945ca5edb44f5d4cd67e751fa62ab3d913192c25a1d280eae53dd932c7b58af35eb25ecf1f758f36133e275b54309e6db6bb631514b77e9ff2cc93776639bba03cc56dcb943b2ba6b2a89b747d2c671af6ed7cd7fa995d46fdd3d3f4328b87bcc0d968140e47a87e991f1da55db0fdbeb1b6d8467a5f8463b5253014d241a61fb55df3d4d11b3fd012119cda513b119f38fdecb48921d162d2dce7aa50633af4762287fdd17e4f277a1a5dd0d1b7c966e8d751e7623006084b57ab79912c4b8039393df5afa349a5b2a9aeacdb0d5403c24ef6fb456fb6fdc2f46b12ecf7fe84c04940ad47d18cea9bc8c69d9e9d0583d9e574808a08b6ca89f28b4a4b41807ee527b3e5491124d164988f68a50afc4c3a5194a17ba7a7f841ab3fcc93d952e69a6e186a18a76ab6e5834e094110fb29fd9f864bb031393d2d3f26419c6025439beed6c55f69c8683e32ebe05fd32453a5e1dbd52c3fe9ebde70164a351b68522e9cff44174d42a03cd45785d7f5e7dd6f93ddb4b741f2c20f82dea658cf93acf0cfaf3e2728e979819a6dff5124f963d8e9ab02174d651fd72fa1041078b55abb9b91c0bd5d8f9643ee99245a441a1cd691abd15313f25f3351fb7d4b0509be344aff24b7d671d8797a9a4474e7caed8612dfd1b26f66594b918ebb5254ee6c9d6cb6c517f35582c5e95ed0b14405af16ebdda3ac59f3b4f30e4fb1939240d77aa157a9c3a59d156f29cdb7ff7e6f367cc719ed7e9ff496abbc7843afb2fd65ecf4a96c69b779040691b8c7fff4b4732d2033519e93ee05ce17b74079d9298f3a6c5ebe1f7b654b07bafa09b85ba84c29d4ee4d6f75bffc860065d0988613db87347027c96c61d9dfb4bce97eef643d28347d6c7d6965e3a4eb7961034260129d2d6752e3e970a62b0f46e53c87e63b9dbef92a4de6afde26f3b251bad3529c57c26416f4420730a1d35664afb3cd6cbd73762b65a42f54d61940e0631459b228e6c029da8692d803b9521ea12b5e7942d7ea960f5b5e7c4735b45fb4b22ff09d36ad7d2644e69bd5bd416430b1d59496ab1b972cf62181f6a80fe06560f724c2a1c7eecc18439d044f58c2c1f8b21814025873aa5faed7645810f80c085b8c080606e9a6486e0ec59c906a942964d9ff6089e36dc904a360a1f0f3c7da7b7729b317691b60a9dfb5eb68cff9d879e54a2d014781e3dc14359ccf41a269730f47833a84f237bebd0382d8a06899f2b68c3bbbfb17d85e4217888c2423a42d5019c19565b34dbb9a58b754af9bb9300c0e95502e3e8e981d8ba464847166315f1a8be4c1efabbc9b056116f607f96536c8641532cc2c9d8b9410149a447bd0b3833c9c5dd06c6024ad33d1b5cde5b4d70abbd706f7d3d99c067f9907b440ddee284a8739fdf0e6c3f51748067b1fd2e7512dab3d175265446b4d079b16aa313f18b9d9f144e08ca92b9372db4fa34e36985c8e07631a711e7588861a8e2917ed1a6a787a7a5a30d6c6a9169015753cd73d578d0670ae085b1af2f8a60c369d164d83381cb25bf2d3d399349a0703bbc9c7b2c9df5bc074519f3b1af10cc4c7dd2c0f2f1441fd87d65d0b444f176dec485a7f9f00c5301da9344a5412d1e4545033c26afc2cd2048a45bad48b8066bc89cb26ba67a960b1ca50997ebd8200687bd143d7693a9d1f5c8df8ed765561b02600d0fb26e6dc0546f379b2a315dbdead419d873707749fe916ef3341534f0861488bcd89d0b1276660277ce0b8f8c93f8ac9ab87f5899c61c1913cc6a877be7742c855754ea7436f28f7ce89d74dbbdec81b3560339d49d3cea6a4243cd9361e161ba0de9e578b240c5ab0adac862dc49d8bf00207d6a2137486e34e3f2c512c2aa2af626fc9a3af2c787a09f2e4ec8237dd015ddb460d54a6a410d454cdd4b5ba5173b5504bb55274a7a98ddaaa9dba8bbcedecf7dfe785d7bd786e5643bd757824ea9e4ecc03fd7b8ca60911a9bfcbcfa7f2f3593b119fa0efb431e751a71f285afe97d1c5279f7c78a13e2712a1ce85788583ff45f4aab75eadd55ff10b66c697e6e12b7a109ec7d7b5c60cecc8a8777909bf1c089908644c2d641c9490f16f91974d8beca6c8f7c239a08764fbb8ccf6c9dd6e35a6e16ff9892e97c73de8edcd6abedde7c5b8d8ecf3d93649e754603acbf362b99f6d09e2ece78491ef1777f3dd6c3d2ff634bae59e2eb57cb59c3fee35bb88dacae843eea96f226f7875f5f0a27f75b5bbbada5c5d2dafaec6234f7d1b797e1c5ed17fbd3d65b83f1bed87bf52c67eff8cfe26fd51d0f5d477d1b7f6daf3ee3de5ddff8976f9f791777535f4badf74bde7bed7fdb6eb0554957e1f3efff5d9bef35fa3380a744a1c7ee0974dfd8adf0f46c1f3e083fd9557ff70e5e1cb95b7a77abfa37a83bdaee5ea8afafc434497b16df0eacaf7fd7fbdea605fffe2073401a3d1deeb7e4f353f0ff63dca7785a6d5df236c5639f63ef583e6c49bd014fcc34df77ee53e76b9e25f75a5a3c0b44235caf767baf0eb96c2cf95fcd0e7376d9ffde165f7bfd0457a096cd61f2b592393953a30fa80c6fb3c76678fdbfea75be28740fd546f8c66fd19e5fb397afaeaf3b0f2ed4f7aeae9ebcb6f3e7dfdbafa95065a7e7ff3e95fab5ff1a9b693a8ff92f9d3376ffe11d67af17da07e78fdeac7cfbfaf7fa02ebffcf2ab6f6a5d0b7ddefcccddd9837fb35feea6f8778697e0cccf0895c8f7abf119809bde3c7ab68ab7747e56794eab37ecd22908fcababfc79b0dc97fb577fd0eff4b94b9bc34e2d6f146f462301bfa3366e9c8bbfd1389fe92ccba2c8b72f85ab16b6acb32c7358f6aab8dd4f684c32a27280d531d00b9dda3c88b9eb4ec7fc381afe4a7d7fa6bb7850bf44e7e8d56cb9bedb6980b44767120221fbf46eb75b2d8367e733f59f946f7a95e3f11978b0bf3e8dba574f57dbe757c365b29bbd2d4eaeeecfd56f52db9ffc2120084d8b7f754f7f692fe804aa4b2549743ea4619dab949ee86c5e9d4f884eaaec3c3e87740cf3e46c3c7aba507f3ef028e2bd0c91ce248f005b384fa2569c2bf2fa0f74cf9efdf9e38f3ffcb3c18080bf11aa90810d7799c772b7f7c69bd5e2e534d9bca47bd1cfbb5c22085b3f5e5e5ef4f71f7ffce22f7f5617fd171f9ee6fb8ffffce18b3e53552e5eb3000f1954f9971ab379157d25a8ccdb1eefbeefa8ba6da0aa6faf86eebb61f7dafb5a13df63ba6bbf8c9eb8def095ce15572fa9bf1a124be96653429c5a11f2c4c1c735124ef757895507038b4f6774811d0e164399243ce174dd4b5d63baf1e5be5ff13d7faf1e80ddfa699c823f506c3ed797fb7e9f866f035a8a2551d7d433422109e558520f72d049ea86f02233664b0c751c121fbc920b2a7f737afa17f9b9e05773e132e9d321fc66cde4cf85ce4b18eb6f4cc083dec2457d1d8d871723cef39708e5f134a5d627c5eed5bc405f3f7bfc2af7af03d59952b3d3de9a0ec67287e5a9b435edcd40505edb4441bda7b43d2d415b9b04ea0e5aaaa435db0d4e4f7744ae4de9f77d6da0efe3e18b91f96e765eaedcf16c3f7b7c934cc028c02428ee3dcfc387236a23abe67c49b0658bbcefadd3e6449fa943a0da7ab75b10b99d5b9ab9dbdeaed8329dcb73bc8d36d11de17829e1787a711205e4f4a694ab81c63bc2d5089e56d1041494bf91c5fa74479b84c015dd26b39cf084981ab0174c9a280228cf4ebd204c7bdb7a6645e76e4b58114dee075e77dbf53e189d786a1eadaa84e9fcec2c580de7a368dbdd243e9e82c17d9424665cb4d7125a62677fd02ea7d1ad7ad7abd9d227681560521e020085c66cdef758b8f45acb923ea503fbc0f32827fe31783a8c674b3ac75496eaa5a12d566f8bdaa8e96cea8a677ec95afa87f29e5de036e2835a9e5e20d2c2d607156a93533fc379b67419efb1ac0b7ae612c41821afdff0bc9c9ee6d45ba282d261d2db4e67e39d1f103138e4bca3a8307d49cb266789cbfc1ade8d084f2712dd7ebf4e4a9a67d9cbe80ada157a8bf95e3e7beb058372f63a9d041cb6263fd24c94bb1844b7386f7afa5e02d20af801cdec40b69ba40a21354db7f78226c7a2a08d91f7125a8a2f93653e2f86d9b01811f02c6b9b576a4bb1d573b0f3ebc4d8451439808f4ece7fd1765ddd6db2e22b8857f7fb9784bafc57524fc309ce2bd0c8f04ab228eb2de9327f3d4be704429979e3d02567179663125f8404db6d8f17ee42b95c4e3d8423c7d250a18c4d303d897967e9298dd499dfe5ffa87edf69802855c152f82d38d2deca6d8f76a1dba4d9a6513755ee27a263a53f0538a2e09964e6a6a42d3389c6d56d30a16d402b4f8074321ad1da6117441d3fc70f9ee9fac5ff6c97d695b34050af45429fb4c26dda3f872c9ad03e10e605a4e963bccfb63f7ffb4d9322674e6352bf8193c0d2daba052b058ebd2fdf7cfb4d15fe861d70f5b8d562676a69a1fe0bb0b9e2666be15b2bb3927b1ff7edc4d9ec937a77627f194192dff8404790d28a714224ef3f67c5bda2d205558acdb2a6a116bd24cf5f11c2bcfb66b6dd15d48fb899048d88f92a21f05f24aa731184058e304137ce050e9ff3ea7bab65999de0f23aea80a94a3b223120781b5d3b9bc7e5f167e66a8c08e5569da4765fd9cf04c05163db921fad9bee8f62990b209b6888f972b5108849f7a06eae79f7835ed41bb8d9aabdcca36772bd4d8ea1055212b8ca912eae2a5da44d47d7ec9dead42a445d8424b4a4fa77f56ea2b1d8cf7b7456f2de579fd7983304e2da4e521da363ccd0009b1ad255caa6322044e5b5110f3308e40f0785d6e7bb62536ddf9e377bf76604e9cbea5a57b089bc00421f0e41e8ebfbd50ef57f43b332e4a3b0c6f644eecc669af4b0323f6f93f95da1fbac745f89e08fda7772dcc6b87bdf8a39c58fa2b221a39bf4bd814825961ddccae4cec10714b9d7d1ca71a9d2896169c793b95bc72c7b08706b670e20d368796667293798d0f860e6871926d1b153777adacadd5cc74771ee72886a83e1dce28f20e0e511ae4f0c680bbf766a9bc77549c012d741e47d929c088e7c4738f2e527e7c9e527c2302893cfaec6a30f4e165bc2bf56f759b2a67e17d1079479b5e64bcf703c39ed5c12e941922f3d953457cf1b56abfb95ca8e2cec3a3dbd95e9f6c0681c45258f113cbf2b6628b5566a7a5256b5df9baa4a6e661cf2eede0bd3e6585db3fcbf22197e5b6df4adbd5ca8f9c02d65ca4fad25933f7173dde72d457b7fea75c15de1dba4b6ba02272675cc5ab0a96050278e7012896e11663377c5dd1c6950cbbec41da6bccf8f4d13be4779dbda7149e1775976f1b1492b96cc026f9b34f34979a1e1941fa9e5b90a1fe89329a97acf43cc578033b30041516c4d7e737eb644c9e94ffbfdaa775fa437b3ddb7d5bcf8b058fdde92ba6acbb9ad25e240d6562cebd148b2151d426c56ce1f6dad52079344aa7c1f6e3b381d3cb68d1e5b27f2d40fd80bb7d1ad9d7887d576abe9d33db0850d51cd2d79366e9ed4ccc8aa97ad16b81d0d9af7c36a3b43c703b5033fc7c9b6dc25b3e53688dbf84f7fa95041715247f742504b6995801b38029f9c1007bf930b43287754653a7e669b8ecb47a295c2e458d78908fbf3e9d1af54b4c9456321bbdc0969546100e08b2320eff4079646559f4569dca8277185461062a9fe4078999da37d3aeba4c73ed90b28ce099988da68006ad06f32e782f8f814a44178a12e4e31eba24bf879013cb9c8b142c70a7143798cf14da0cf54699012df82cbf55625417c7611a6922b3d968bba7711dec45ffb3754e00c3fd4a77ef8d1698ed2176d0b746c6233ab84502e1be301ceeb341a262388ead391701569e4e3c0d98013db69ea578197715b07511878922dabd902832c4a0625bdeeec9f69ef6e298c950cb9d2f65c333797e498424d308a66d090c8bbdd721f5093f8a6f84ba8b3bd459767e6f92224246212844bfa9b1888d72e6e65fe2f3827f207ea4e65110b3f1b8bd1b60f0d2f38615eb045647f545ef4c1b30b5cf88a0e790338d352acf7fbcde9e946604d1ad075807b45bf05cc6d9323b475f4d0c031d9ef5b802b36676e19b4cc372e132c6cb1cc16cd7d2a82a7433927a95aca84d0be31b7d4659fe7c6c0a0d6f97ccfbc181578aa064467ad8a7717e6cd4e97afcba6aaa91e40098630cfcf6596dc9caa9633880be6fb77d606ebaceaf251b3e3781cbab431d629aed13a7426a041d2243152dc83e3de765d64b3f1acc8e3b1d0182133e9307ed6548ddea5a9eabd7ea4997e38e19ceae46eb929b2d56439fbbdc84f8a87f5a6d86ea1af7ae2751399d2bbe58cd084d760a734991a0e89c0c7982008ed1da2cdb2dde77750a0266c6aab6e220d115fef807b807c620502bf0f24041ffccf0235370404116cc3310808be238663308db0447c6d8f83c0612f265a4d9bb9498a209c9eef1be65b42c9a900678666f20d54f55b743222cf63503776ae5a8c642cf21180a5fdfe2ff273c1af424a3714d17a100eb2c072b9b340d04d64a5b2849a61e124a38a836480049713997523d6e435b2910fa5e98f5cf8283dfd27965ef295f3c67229ae232d8951a2ae843f25b0611b3d39dceaf0e3be12b4f7876d7197afc259a21898843fab72ab430d1b041a7e37c59c059be19377e9854ff96c137a25d8f5b4ed00947bbd9396ef94dcb5c99be2ed6c75b7d5a3af94fdaf63990e0745495f30c11f3eb154bc8d8130bc1845f85323fe5532fc7044573efd255030fc88ff7e0cd557477551670589c27bf005f62017f47032e881f9feca6e64f5119d1611b8bfb32f1578a1bce56e2a0dd02753d38741ac7b670e34bdf647e8f847a3a8ebe3274697f1f867ca7611842f9efb1e24e152d987acc89be7e62d40d98fa5ecff1a51f7ffa39121c4cfe969bdc583d12e683b391d344f879966c76cb59f7b3c075af4833a621cc49007142367549df2303b3dfda764078f9af6f0c4cf6002262fd67eca2722d3b299cfd2e0cc3cb3ee313514e18f9dc31423a6c63227c55dad0f095bc586962d042d8cf7738dda39fac2fb881baa749d0a53e55fd64ca6de89ee48b35f8fc3840549962bcd0617ae8e80ffabd57fa1aca21800cd064c2a04df2dfd4a650d5ac05a56325f9c175abbf7b2caea6c32cdd1f5023e6b073a30b5b3ab5ca3269b6c840d91bedffddc31cc12ede322063587790bd3d82fba00ea9e24c4c02cb3d07c8fc10fa7d75ff52b6d3fe8f515769f6541e83d2f3fba1f2e091bf49eb9df643b957b519afa2f9d05aa8eddc2eea2bf031c060c37ea95eeddbeeef785dda7a6e6ee05d7ddf5cebc103c79da5d4d70638c90b4ce41c4d085f1b472dbab49e4412dc64d3ffb0846429e56fae19e98e9c58597eb298a5bec433a2e7de06c78f46426fda8e83946e30ea801cfb9f1bc965be0b64a686ca0597c4cf4a5b65167767ada99e2d6bee5cb796c308975f034b7d4c13c9a0fd723d09ed3787efce86d5815745e47693b178355b4a6595ace592134a12657a7a795911cecd1a74656d17012df3a977d78dbc3ccf3f3484d4e4fb7c1d34d743bbc2340e8e387adb5aea31bc28e59d963195d03b045d1fde9e935dd106a514978315273a0b1b78e62cc7039b2a3ed76e9e39cfe4fa3a61616d132ea0760afac576b9f953caa033d3ded7617949d29c227f4221aded3b22d4603b120b038c996add3fc54ba9eeaae07c0ead131e96280de5e8c060e82f247faf42f2e8eee3477c99f4b87e64e87308405dd6432aaaa51c3e22c2a684e9951b2f8776890f4892838cf61d57468b9f91cf56f60a38c2d6d79b17230fc0421a1841af9e0dce30433b56892b06da940306dab874e5d8f9902280c7d74016df161a21245402d1d29b7ad9ae6ae9fd4e911576c9bb84af74ca81c11d6e6d1d7b8248613c63972086b33fc70ca2168bbd6501d412b7c2d809ec9dc844fcbd52e9cb5b15a21341603ea695323a31410603aaa630064b15a559328378476a1862380b19a0e02ac1d89989ac0a6913185298693e2671c540703ddecf23e649442e5a059513ddb0f7022bf123dc33b16921d5a83fa185be4f72e672075885f08ef34ed7ba496a48189a866c57eea921ae011b17c02540fdd27a01ced9d93e0ce41bbf3643939d2e64f1a83e39bfad806e6f2bc7d55f21e6c4935541906f9ea84b52e20bce19aeaea4a0f8b79880fe840fd9ba45b2d72c2f3aacd4199231195fd12854c707d1aeab1ce92ac2b9904254b92a66a976c2a06e9ae8ee02a4b84415a3ee35c4e2bb240b9692fc4ea6c961311b55ab51ab8836fb622d414eaeec7be2f7b4906024cf381a149c64d7ec13af2fbf2d907c6d7e9002e30e337e94d37055193ff450949ca7a326c44cd12817674d5c80bd8288c0849fdfafecc44c269594d2b6efd07f56452f49ff04e6d184054cbda5871e84f465e7550e6a9bd6faeca93fb662be0e95065857a10058c5b2b55fe213a9e6d4ecd66fae4cf6da6afd28736b35b7bbbf4b875b6ec9d16495e6cdac6f69ffab0da39851d3026b02df32f2d99454fe87fb84c8eb691d96e4e527a50acc9dd34f0ad5775ac4d6a013594f5d3b617ec1f8c8f1a7c60443600a161cad45975c6c5c1ca817f669208cc3378ac7d763892c3f4ec02798adb7a8e928219c26230eba661c639893a6fd6e658cc0c523693895e04495d4e9e5079a2d6df55fce23dc5e7bbb68e5a63bfc8f675707606046860aac92bd54cfe7035dd6efe49da5e0bab89980d4e344ae46cf75b6b09fdb449f2d90ae6f77cf8d3d5039e89642ff0bb2642f27eb5c9f13c5b2413241e82122b4b47d1025a906575dbbb7431036b496d0ac2a09af99792dfa8a1dd420bf4709b388e4e8c96c9b6ec71051d6322fc3621b464024ceca6005b353a623f589a8145bf1b8a1e06e3815536eb8737964f3a20cc86ad228940c87b96fd65b09ce0c9ef10e1e817d16b51e39e06cc412958977aaaab29c022d1a4ea7e3f0d94b6831c53bdb09a858306aae28dad02da7a441b6b1d563596ec4fc274cec4109d2b7510b81396af978d5ae258d662021b39339141879afb99d04adbe27e7f4daf04d9e9039efc0269efefc544690108e19f475a87882ad3c6d0768ea7fa7b388d4bde5710fe4e8b350becec1f1ce3c3c45c010222697bba86029e37c82ed3410a63d52e5b810a8bbe5479b1356d93aa55464ad7e7067e8408d239ec52d02784b03f94d2aa546e9eb8426d8f4bee39dbff6af22e75c4be563a93e81235827d223de15d09ba69cc1b72d2acb8a566ba53751d56a65b654d1fef1428f659542326156d5b96c59d9e4e2dcd3b051bd5e18383068ea6603fa20a9028d78ad39a7d71545e7715fdd292ccaacc85653ab5e834b34b8a6131d2195baef610ccc8b2c5bba40552d24a1b83ef4171990f72da32421db0b315877b6feb799bb84c1e5317c820820b53aa72566ec5eb48ac9d53ebeb85ad92850c02acc8fc31d783f78991ada86b562710eb09c7998aedc2bdd305875ccae9c48258a3baf288f2d0ac40f9b453485a8134e40f2a8ac41a0656f84411333ee80ff45bf558d69080d024c2faf6b9a7a6a54e048d279c32e5771bc1f4a53386e5ee3aa4995aab05d1cca85e6da22ca6ade68fe3245c11b51ec4c35138096f59239cb0731fd6b79c9396fd3aa2c21bb5a417ff5a6162f1e126baae6e841b1096738251373ca39be1929e405bdeeaa779c0660d222e02ee2d0f68800d7936adf56da4be6b59835b7aa38a0605633aa2c1760d0bf5f714f7afa322fe9ae6771e840b2411c507239fe1357a38c10fba272774c3036629fdc688d356cad41f841b5aca58f7604213350b42639e41af15d5ed872a70547cd1b94e33f29e111e0d995f0fd88dad3b010fc57ec25d487b195a037d9aa9ed11b298b1ca2984056a7e24d3d770e8c0f4aece48fbcb658894e7bc03974b107d776048449b05d287a0dc69373a7b38d70fa56f3061091487d1607c391bccb42f88ea58677aac017580ba4a306841176e20ecb1279d5f2e4527b79e66916522555f7254940e96cc741175bbb38a2f10b7ddc2b45be17cd1699c5dd28e906ef023ee35cb279e9d5d04c6cf80be67694d5858343b7b2155c6741443cf3b38ce938c410d2dfbe5ecf4f4a1ac720640a3a893926a59cf3695afd5e0b030b8abb9a1b987e5067bac1a8c58368a637c7209596e1dc4a81b29034634d8d07d82175edfa3134500830ed516276b47d7c71d400debaa1a755da8b75271f536baef464270ec686356fc47edf7bd0bf510dd99338975b911175ea26a300906b7f4f4707aaadd6dcda3bbe1ed885269cd182e9c9ece83a78535345cd1542f20cb0527d9c7c19bc23e4ca6872082a03168e33e7a1b1c32667f46e048cf61707576a6c6d0fdd0d91912adbbd1ada28ce8c8bada562a6dad7c1827a2a95202bebeec6b1dae5b02311beaf47ebfe5bf3e7ea22f442d6246e7610b40b20d0e063acc6040465d0450dedad5a1de594f27d878151503aac78af0656c7491ed08821fec75c8fcc0201c9b7cd368223a59d4c7e81d6acceccce45307d3eed0004576366183bf723f1975221a30215e74ef0c33ba61c660465a2d84b0304f03aa96da7bc40d877b6f6c05ed51e22838cf4a117cd52c97ef5174d5f10911b5b96a8279d42ac26c5287a3a56d06778be850152c37008a656cf4780dafa31570a8952321a59bdeacc10bc237bffa1ca7dbbf610143a0c96b6b54203629ae01d61a27c482996b966c339861a5bfa83442f06f0ccc72c904cdc6845212ddddf44575ac125a3158b2e8b7c29d5325c8b836848020d6669c8759f473cf351a37e6874446d5aeee19ad2bfa89d1cec050b7039947371570095c7711c96060d7c886b28b778ec9d83d5e9bebadddfe515b7b5e9b0b77a62e30c8b15532258008dbdaa46e5f8adda20a2391d1fbcb5f1239479b69151096c70a48f0e6f46e0b4caae5a05cb51c025fda9acf0b8c528e566f65d38b3bd554ed893a1ddaaf60b856341e8f98bc5cbc4381b4ddaab14555db22ee55057c3036a30ffe24eaf79ef2fe248ca2924757e310213f28d5fdfe26117ed19e79a3d3623699eef6f7b37c37f5d411d974168b425758d7dc529e15a156f94d7463bc102ba652f7aba1d3dc3a34668c9db309803398aa82399f048fdd167aef19b764b503d7258f8d93106e61cc758e33e6cab930a667ac98746ce1b4bfb05ab74ab574ddb3bfa976cf5d8d1500eb069cdab836e350ec3da643973b3a74b9ab4317a84972805ae082cf7cb4652f92eb4db42db5a774d290b01ff14ab9de586ed042df6594bfbcd428951dc56e8d1e1afb83faf9db6fe81050223f52925581dcda47d64edc994618e854601ca12be7bf7ec2ae24e070e23cbef4e3f093abf3ab8bcb3d1c4abca5cfbde1afe19fae86573d357afeecbc6464dc9b79253054f14f955ab9caa207176115851120cc46f66f9cc729286440ade2c0d750dad0066da9a78ac697859beeb4b8836faddeaaad529065e3b00d1e47cb148b44bcab651af452fbb6a49be832ea4b2f0ea6a223ce33200474443b74137be17245000bba36b084110e8781e3ac41519211b2afeadabaacd21213dd1f12615acd428deb41a46d83a85a4ab3ef5fc74fadffc43a7b6dca5b2c7b658f62e06beafbd1598052a72738e2941846507aca1d0e3af35b09b52c34178c7757696100b768ec94b964cd68c6a05b48a6003b0bf91d5e4854eb447179119b3307d59d8c6f22837e7166f31657debaacc717267015a8d5c0deef87f95e3b4a662cab7311b01fcaddbf5cb01fb0a3d636c14f47e76cea6111b166311a4c7d687b61ac400fa2ccfca01e5d6f61bf8be319020ffe27c3abfbab9f46ddcb60f8ebe5e8f95e3ba379cebe673e8dac47f1762c5a3cb1ba9ba1f5bc0a9b23a38b4b2ea26c9a6c3edd11c24958e66525c9106c446b96aedb2ea30fe3a1d0bb2c781f85bf1bbf240a5cab4e46b8e6e9a9c1163b2964c3e27f3c067fe821d05b27081b4e9f53fb8d193fc6bf09a19a27b43777c932635ff5314e78982ad73138bdb0eb5bdcc95c52a54623898f758b1b97475e6875a7951bd15ad3c3712a8e96c571645001c3dad17510eb07a1426454ac0697294e715d661fd8a9e763dd6e3783ef1395b3056689033e31af6006c73f99e31ce5c14e92e3a63bbae0530b2ac21a6dba7ecfa34755395e51c2ef878ad623cf945f29662a95ecd5c682b0ee36b14de5f0a107976e8fb1fee593e12fe8f6b72af7a5e23341eb5a2feda3aa742b314ff07d68fd97fa89065d87c1a78e5408e78688ff85ff2807f033397132d3db3d94dbe8f5c7e56e36dfb371e9b97a193db1ce16e5600197686d6cf10c19320bb8a818645483d28d3594a1dbef2426708109192eb578ff295c9719d69d70260661856b10b6f08b80269b9d755f44d5929ae42de0e1a3401b5694a1b622ec0e8f492587a316c978ddb947d261f971a63d873a8c6f763de95c66d0b469bbcb166665381e83becbdc5d7afc9aca5baf29f1b4496375af29a296e6ab6de1fabcaf0e579b4cb9deed21595393c8826ec2a71bf72bc0b94a4b27f5bcefc2be150a30809093928f06e05763c206756327b815b2fa061760f74ee289e8be6835d3ba3df6115c845de8d2b0ac18b92232abdd6ce3527e62ef6170675805819a6ed5c5885bdcf896d89886090ab71cc30083a519380fce71a8573cd4b9e97a9407d72b815e7ba284fc80e301c0c4d5dc9770eba2923c6ff720dd88c0a0c7568916416096485f5ebe80ddaf52759fd5a34cb815d277dff84bae0529086bef66cf822bea3a3ffd5cba99afa017569e78c20f2e3aeeb97204eeda7deb538bbe8951f3681a90a6dac8cbbde4b49d91866c612b4e4d400a06b78e0033b02518061ed3f76e2b0a8d4281882d6d61262aeab7c141a0e6b1bc7535635d376d8a770ea5a589f71539d2d21f1bbfdb1e4f006afb83535757a446710da48fac97fe0adbc372e2116822707808a0a894bdb1de598fcb7a402173b5b516320c05f47d36deb0ab97585fbecb9d63b16792c465afc56e43731c09ca26aebf401877548e35ee11a803b738318a9cf02a69496c783ce5153df98f03966f668c4b356058ce824e4b86b26cd5456bc0ecf65fb2be30e7d31005b93e2b3975e0e2122af3b6d8b09a92aec1a1780283e8bf8aceaf5e77cf27ea8be8c95150f86b79aebfc0889f2ceb5cc3016d88eabf62eeabaaea07b3eb72dc762a25b8f192e8fb945aad7a33268ab709bfbfe081a1f1b0c4580e4a5b58569c1fe34e9cc1707b4518378b5faecbfae772a142a962512c569bc7d3d3395dac50fd819410cec271c94eadc729fa3480e371ed221ceafdc3b1919ccd7191cc817bb3fe225b1eee56ebef975f24f32da1c05079d1f71b8727a18afc593cb3d4fbb53f33ec66222e63743dbc316a8eac4576133d552e117194681033d3cd810d9d75c29ee7f552a4b5783e5248fbaea69d58f15a9dc74652727a7a03154f8eb53235d774c87aa6a6e3259a01fb0d189a1002e3380b573036b1ca2f1c4125cad5351040f7a687b11f1cc2b504d9990281900d657d98b7e89a1b755b0ccbdce4999a425242384930b5069c6080c3457571891e179060f1d3f8ec0c8c53e94d1d03b41885cbcc9932b6d3f1b5634a2320a86b7296233146acd2865eddd68cb3288b0491ae666e8942d4991ed47ce52203a59f355307a1e2ce6ed255a2506b8533d6592c7e9aed2a412a4a0f7f345e2862cc58612ae3d3cda6035afd38366ac8b45788808d6776ebf0baebe6d1444b9f6f7aa6ed7ab428a75c5baf3bf9c142a01b372acfe7f0dcbd69550f1e0ebd4db15dcddf82a99daf96f4e30023381dcb8a13010f6079ebbcb9375228c83e3295374e087cbfa7dc356bfa72b9e56a371b3f7ab84457139841d7ca9a62234caa076f2f7cc3e6d1d37697ecdaa62c23f037bf4f1eb72ddf8a1e86e51cc81ebaeb37667537752f5ce396d2662b41bb994dc74d5f3b98d1c2c64954a5ae41ecc0969330ca6208dfaf23bfd1ec04cee85a23860d74f4a6b23e10c88b19c1d8d83efa810c3aebe905d383c63b160238ba4c3d9332580edaa9d499fea8eb61e779236e97616156d62a11fa261209c476094e055522fe2b833233d0297e7c577439bb49c1ef0e6903137828ef51228867ac0d8ac551cd394eca3986d759baf0e0437690cbb446139001b869f8c19de52c2298910e2f7e4d4654ce00064a79c1ef000c4484f3848c5a424514ad5355c479d87e62abf9a95fe684b3bb32336310beb2e92778fd852a586e783f2ddaf4c5a10cd9884bc1a1112d3dccac07c2e88eef9722c425cfa6f671123a3b1b7a9def33162d80c210d6a329787aaa875d234ab5d1c5b0608b91593cd1fb8ee11c1a08cfcec6fbfdc4ec589b4e5b82c5f52c77bfbc60227dc6fabf720b15b0e4abbcde545e2dab1b5c86da5c20a99c0ef7cd9c20f4e10641d0e4004d9a070839a029c603b0feeeea23411d6ae21c0e8d5a7ec9411e85a316b562eefca9deadc4ecac12c8db286a178a8bfc94cc7621e159ab792e1f2a8865ac2b46ae6e37d46f7e075ec4378decda7d4da71f77cece9c9221872de3ea257ae8632f5dd1b3eefcb6d8bd992d8ad5ddced78520eed305d8ef6e07959e9e562abdecd3adfa6565f61ed510a6853c55846d4d26857696004623d881b554dfe3da3cb00ce8e36a3cb62920f25d2aff2b3ad58f4d6f9dfea376d05bf3d8f9f9f7df6acbaf6f56490e475f5f4332a092f6ece2af93b30421d5991715879edc27bed4b269b29cd0e5fb35aaaae5d295048e76d6d7d46bbfd9edfd5e5a043042bab10e812a00fc38e2c3a3ccf46bb40a2ae82b3056f4f2b35e5865c345ae211656f84be0fd5f46156071bcfeb61d606c5b9bdd0f1e5b7ca41e9ff1665e67ba45ddefb1ee42f5c88cd772991917074d910e6e974546a2ce04b4b5097bacbb0bd32e7988ec3d30a990af5e679bd57c0e052db38285d02fee01e2366c661a4d31de79c6bb7409129c392dd4c774602b2b7838f896aef8d2828d3438f058fee6fadd54dfb038f01b884416fe8db1d9b581f4a0b74707f41b754328ff9c8a7c867bf13b48c5bf491ea97dd0710bbf3d42e720ab48475cb7af00111eeb2289c1deee119e6afc940ab469a6a8fce80729dbcbb65b763ae3adb58e4b98a4043cee76c5205d6d60cbd51fb09a09fd8ad6093d10714a7f31c7e1d95fe8bff503dc5eb8de05f3a0e66c5059bfa0d2eeefabd58226e86fe87cbd2b8452207c4e28333758d015385b5283b6436bdabee0e85fac1f74e7f0842ac30beff89427d1872cf52698461be1271404d6e0674e9fa20b28d9553c8ce7ace0d3c033db2776a083954611d14cec00f695c4f50c9e6a09600960db6a37b1a207a5776cda92fbe270d08822efd924cb8af5eef36497446de182972b7c1a3a2674e2d3a1e6340a816d1d118bf5287e21114b219fc910788a4598fac669f597613ddff259f956cb739f4498fbfceab0bf1a9ae71124b9df45e7fef0d3b3ff4454e7f246f9de51f72845417557eb3642484e433cf3baa5c3b1ef947706e5de9a2120cb7a6bddce83a6fc3ad38024f2769b3b86c81907d81a830fa35f2f420f8b206fec36a69b753d79ed66e1b7c64d4cac85b15fbffefe3b667c38cec6163df45c8f55f4db0dc57e681a54fcd01aa5145a7f3c01ece81bd2b15e25c6a9104b6c90b8421f385b6905f26fff666546b6a1bf97f14058d2546e3130f88d353be1b7acea835dc9b61c36d4c735e1a60b89311026844ace62987284f8737aca7a1b37f0bc70c3c616b0a1ba19f14404fbbd9583e62dc227ab757943d88da936d2c6ed65e0b8704ae82cd54999f043f99e0ee1938c3ec48958ad61b2d388399ab6c61ce578a145cc3595517de90dde006dd7ab9f38899df84cd8e642c19e63c2a9f681ed862691bc04aa1c38c707c6f4e988a304044651db2e4d63f615908e94009a312b7c36ca0688573c5163c7a8e81f156daa96e5cdb529845d52220e9d259d82d819dad51f85f6916db060b7c3ba0ac2808e9110e28f8c1594be09d49b06319467b5f6bef0b6a1cc604740bde78d9e533e1a6ac8d19addf129d188a00cf89c3a71fb02d768c909f2a0dd710f530478609810777e803bd1c6d1b1e652071ff68abaa41d89fa41c6ca56493c3f0838c813095f9344088435e84d244d87965ca219c74e7d3c3d9104fa3e1c4a8a4466fc09aa3ba8377cf2c0d12876271ec4ee5eb1488b5c3f9b988421016202c3e1e72ffed7cbcf3ffbf3abb34f5ffdf9f3b38b8b6c7cf6973f7ff61f671f7df4d1c71f7ff8f1477dfacf632625d77cc49783a30bc67d19baeb8e335dbea94e077e667e6003f0bc5a6785fefdbb81789a5ffb793dafcdf90fed2cf1b73f509d62c2ebb73f5425e7ad0becf366192d29e7d36024bd131cb4b1a3193b702f29a1f41c418a96b330a01f8bbeddd8116bd39efb4dbeb12c715be4b89ab620b2e8fe993475fc27c34c0cd7f0d083cb65d567ad3deb7b4c6e4391feb86725d70cd58fe9647c2ff674b0590c4050b6f68167c98645d582a646a466910d335bc90d9c2523165e0e5c97b47036de5f90033087e318dd856aa1ee6512388ed2dbd6bb2ac86e3651162a7b28fbc16c86dbbbe2ae08dfa9d59b204a3c9bf98d1fe02a8b8b80c76aa6939dd6405ad1c92586a789311f57f254b476102bdeba9e27f49c6d0eec60f3a2d9afe089c36ea1139ad65af43897b45f2a99306bcbda25a3079cedcbd5ea666b1dec5416a228eb390ca05b6d98cd208e79639715e6b4376145e9a323915692312e6dddb29455e0de98a55baa308ab91336b9ec408a8203c60210e6f2810feaf4b53d32b39e7fcee1959c6633cb192308f64d3d897ce538c3bdceeea4c2ceaea196cd8263d7543f651223a60e5fda964e3affa2169eb7e32852fa129717b3aa70fe55fd207d92c566c10d88b27104d84f1b52c3d68350dd2ef6c80daa5b439f10a51716416e9ce56485bc3e7305cd7e298f54cb867ddfd16ca904d7eae6efefac476f54390630b16de39cbb565617aaa8326004c043fdc9d1889aba07e2ec2c87b73b97a93656081d4d67e3f8c2c942b04d903ea44ea0210b06e0ad4a25953d1c0869cffb14b0bcdb55fa8db7a663f13ca5ee172e9f4233465f2340e3d9280605963fbfeaed83abbc4b2fc3e2d5883fd0eb3e38d781a8d49b68e8bd59ad3de5fd03f43dfd7eb6daed560b7af8066c9491faf158bc5e823fd00581ec8b76c80224bc38b667021e3e913a8ec25acdc731eb6bfc33124474bb8d9a3e022189d7e6fe6d76e3b40359bbd75e4da5503a782a405f835e9a024bcc02d30cd73e5519e15d0af27a6ac1ba8cab20e3a8a01a133b87c5ed8483135fb3e69a5f1a1798286441e85f4729bd1c415aaea504bb84ce386681d6aeb516f029fbff826780380f8d10002953653e05e51e28e224bc8e4d3f827016a7ec69145281f141fd2484b8714eb267772588085acafa8f33347460097594bb94d90f664dbfd82413cea18d2c1c1ba193934fe6b3e5cdf9e5276cc875f9c9b9fe356651e7c9079709c725e1864f586ff503d3f50f605d74431b2001ebe7a7e98c30b035d1fc9aa7e3981259e2e5a6b703bf2cea1c090ce3ed849d6676d54d6fba5bcc5f179b5932874f94ced1821848bddcc72fe7740e22ef937099bca5d1f10fc06463f2e80315ce909dad7d6843f5568451f24429f11ba4c34cd3c03d653d4b614766b5102fd4ba49903c36b7aa4cff27262cece503cdbc79c6942e57dc73539e4d662a7db30e212bb653b59e80226b9a84e945e46df7c18919c607fae183130e2af2c14e2f2e27cb34d6fb70ac4766ac7618cc88c644a5d588607e5ae754678415df782e63af5ec905348c1a1da1523e9ddbff16972f75b97c793b97efe037b88d0c0f8f711c5b9c0709839e5d11c1c3da6cc98e84323806f5baa9f26f8684c67c7697d2f9db7aa32813961248ddaacd5ea63c00805af6dc2182408c684290959782416e98947c17fdfc8e00c51c9918118c6f8ac7730e514c3917abbb6db15faf664b3a107bad694cc3bd0bf63cf5e71cc09832ea9149c875fe4b67289ddf6dc05ee448c6c35f7ba3e71c5ab9e7f710e4d9b52c4b12d70b72193fd34976222a664876427f3e569ddb95820626e279f73c4de6ab34998388af2bf0563ce0962e96d45cfccfaa5bb529090586a41bc492995ab9dd2cca08f8ce4c0ae134336b24c071d6ee6639f46bf821320cb240d1edb591ee6de52e336fe2cd060e3ba4ca80396de6ad4dbaaa111e7826fd9b96946bb9998813d9359dc03263056972003d602b41d1d2b8e951cf178ee4ffa02429e270124c6911bc74f4013d0ffa0a69d389a60d100cdf99a239b88a6e394ab05a471c5e572ad3dca29e31220ed48a3d21982eb2e565321fae46d032a54ac00ae4b33aa10388db25bceea5447a333f7abf5fa9a365e7258ff089bd40add48aa688ebb8157e49aef4428674ebd35285b270ca2c695854238db35afc116b4be13f17049f08b4f20d19aeb581740f2abe335ae76534a1de618de589ddd9d8d1bd5cddd1f6edab6bc082bb35fcbcf0436948b9563730a5ec5c500d4d5962dc225e5cd1ee864be8a40a941bd243af4b39a1507a8d3ab024f8352dcf0335377bdeecf16a422433071e60bc345a7bb5a11142dd87cf99a5713ca1cccac989c58410a41f68694b53bbf00f9f60cd636395d9da79a6a1dd946711b4fc917d7e5ddfe7d7e2dc695a6ef56b67ab4ff5569fbe6babc3e1f4f19d9ec7f3ea4e9f5777fa32bae1dcecce69ca51076a7eddafae7a81d735db8ede0806f79e5f811201c3c4c7133cbd134a3f8e96d5e1419372122d89be5288000e3f20939e3930fb3dd34658624e973d3085636d1326cf6efb80f50c259f635be53d7fee899ca153a6f35130db650c254fb74c6dff9c9dd12e943d717a6a9e2c33033edca83fcb920d38a7ae259b9c681f6437cfa6c05a5998ab8fd4c2d58780bf84328761a1600134d982db7f85fbfb26304b2ac551b28bcdc17b151bbacee6be615ea1d4689a6830353cd9a21ec722d0b0bdea91ad7110f431888634c98fd88d9ae8318e078258a2fc86a9ba75bed995e30cf6cdd9c0e190f9f6d3681e71acf947f5612568d8e9e97fd4de3b3a8ad9badbb89e30f875c93da5ea2fe15adbbf8dd64e93d4fb5bcbebbad527081c33a768e8059ff411f89cc0d71a720987390e7b143a1c8b9eace65a35c54f301405eebc7d235d8b8af845f8a172a620ba2d21b89b4e2b1539af71eb31bc7def310c25fe13381c84dc1bb55f5a23f6270ce733fa11e228a3c991b1dca5c2c2549038aa9b0668590b688109df8d997fe814eb471b453d9313204e4770f83b40c805ef648ef96c2ba61510d03c8932db4d0554edf76ba5577cd65de354c3c9a2638036201abb9ab2328ee4e8a29e0ee0819d90e09a9dec23ed159d6fee862edeefe7ba2ae9177cdc1c96d6651135be1a2ee1b3887a8f05860bf464c2ce975fef56443ce5b49774c4ebe5e5453c0b6f2ca8c550c6916fae8d697910d9ee6528c546e5c54239e408d31e1149054feb14da736368c54ec16b2abfa0a42302e41825760f544adb54b14e48d9000ca62f32137ea0897d1ec79ac1360f577fff417263b0e089df507fe503f68079d6ed691ffbd4aa5013b54ee2d0d24872da52cd0d414001239c03a8d183b06354132d5d0b414675f8464368c342f97a467d106c85732b1531337260dd7a4666ab3a82f60c8c670fbe635e52312e692aa15e970b2e16f6d53517745aaedee631b35f9f0ee26a924d9693f280c819e68a691568113fd77dc74238afd22dcd889523f934b5cd69746bebe652d7c0d4edbe1f135a90ea7d9f1cdbf74f492fbbdbe0f0e88e8d850e9894f510e1619b1b4e9c0abf5a2c8a7c8668506d35fb94c7859130cd72df358aeca00aec755f374597635460da20ac2f44e09b45be5f9feec2622523b14493e26015eb3e077a53eb81cd1c693ffbe430c72a33763fac605c3d5a4a6c819c71c2decaba1fa3e3b2dd997583c58dfb5e594795947bd6cce971a9a7f1d69956511fe6c1ca5dc017f1e9e9ccb5dea6791767dad09b64ee4ac7d08086c9d989c4290311acae251f9bc96ac7ab952a67d65d3b6b1fb555ac1d0cb2ebb4fe60aa4dace003653c62556fd79d86b202924204aaf801cae09050f182ee32ee91b64c9e0135d02e4ff4271d227066430442e71d1516d69774615140edb9f409db209c95d35f1cec4a4e3f49dbb37363b644aa65b953a8a44d60cff2d0d03676b00feb4bd7b56fd31307450f23f6a06a58f8302c468309dd9af5c46812fda7212c457ccb6c1a11cbfd52fd72533c4a3a580a79c48adbebadb124a647a3f5a1bf0461f909a6100eb6340654c9abf441caf21376b99260e9c6f4675046b233288b792408b2dd649a4d839b5c7d287c09feeaee345bc27eacb876eb2d8a5df2b7e231823b7ffdac26da8e329e584b6835262a97a550eb6de825f31de53b4985777692c17dc71cdbf924db6de6f8548181277cf87f20ba1102496ee384fdbe15b9cec0a82892a58f27bbd9a278bd4b16eb93b78490c0917136f51c65186556117ca8726974f7e0e4e4047f5ed2204fe833fee1b95645cdf58c2303326abddc30cf223f19bfbe3d53795c3ed226d6ad2076db41395bc9f44ba0c889fcd0b4cd67342d3febdf5f4ec69bd5422fe9892873feac7f7f39213059fccc7f7f39d9669ba258feac7f7f39d9ad74a9f70fcfd500493554a3d392f69cb607b539e0a68df34cf08db9d7ac8f61f7541db364c746351d68065a104d285d675959175e33882462356748e73445ec26f48333c925659c5c6e0247b5e469b2b5ff52a9fdcd6a5da99cdf6b7597799c773894e924bdcabe65b4cdaf251254298f227b463331a327e81c6f24a31a280126edf6ba384590de17f4f7c3f023fafb22eccb66d2b773f8043d7484f611f28183354ab892a706116b5577703127c05205fe217be0307dcb54ba973b172ed3575518269ee64d7b070586746b934e9d51a55994d00e68f0c84db99a208d7656773b0fc272ba16dfd59263c82eb8a516ef11e16a454dd4136e585c6b8aaf0fd46b1ce288eca3d22183c0bfcf765e2fb3f2120f9c84b4a05bbbb85bca32b9584bd562abf48f23d80b7886c0bb66cb646e243bb5949eb4ce422a5b0eea756a3b5bdccd2b66909a95571ad96b4ead730b416984b915899a6d5feb1a38a443a55582af876090c73532c22f4c74e526fb5b333e60ac76845aca1af820e0a5cb1f8a5a8d6de2baf4b9d5c60673d9667ac34a75f540dca5e5b7089106155b1b382dd21a101289fa6f1cc72a375458d53007a43efb8093211cf56d52f1782599639fedfc76a597a6ca2a181f4d4c8a6a3c87139af31b59579036c90136cd8f325be5ce02ca1e2749981a2f5ed226ccc3ed3612770dda3d82bdaa2319827905c76f4934ac9007a2cc53a270604507151e92a846ea37c7c5d353738cd439d5467e49fa3ba82864a86ebda67d6f73f60747a73a61438b3a791337e99db03ac9d886aa4600fd2b3d698eacec4bad5ae376a1426a41f6ce389b5c2311eb9a2257dbdcfd2b1d7bc7dceb1e4a6fdaf2bdeb9b36d06f8e840187b8d861840b0bb3093d7e2608b0f1040f9b17c9dbc224d3f5a0b4245667d76f5240bfe822e613df4675bf26354ec5287aaa5c64a9326c2f7a1462a761b89b95ae206b7804abac5be25d63657e07a4b8e8f2b84a48269a8456b3185b2a9eb02ecb6d68b71f37aa19d0ee8425a4bae989c85d8bc6112bb23a52fd3d7a6201da1fb994e9565c7801cc4c181499faa0f92519f80eeefd2615035de768e826c1536d8e93f4d59b454e73a9450004fe94c93a1e1698f0e88d09129f394acb99f22a2367ad63b7af36437bc71293fc5b6ace156b4d1ea95dbc5142b7ef189e50afb0146cd4bf6857354e9c35e62869de7b29c636b882ef9901d40aaa443bc934129dffc1f26a898de4b15316c81e13658ee37b4cbe1fdf633f0b7dceddb7f1d462df6f47fbf67b8fb5752a89f5e5958eae75444fe940ef376316ea2e8ca71574c4a966154f33e5256eb374f0b7ebbbed4ed79433b82d59b88d43d0d660b396fa0ab73674513653aebca95f3339b9370ef6dbec9760b5ac1a4215b477b07a28077a75cac0c18173cee8345656bf71ce6c86f6b63ab53d0b4ea883c4caeb1b239179f70434b6be73621bfdb427f608307726c0c1f7c492ed5d5dd47b935dbe099152ee629b183bb7c1bb21baa562de79865bcfa89e1ada0eade74b8eaea603edd93537b050a2964c142ad1a5e6dab4c5dd396c2c55aa2c98af8a1e78a506f51b381db5c00b41ef0567a9b229f4bd6b963b87b2788168380d458f440c72949355c1d8af1f742f8ec0ca7fa9d9b38b016c92caca0bf8506f25639cae38126d54c27e0caa4afa95c8920dfd8eaa9a71e944b869aac8c1e8b2fd1e2ac05a059c15f4c6a26227a35c72fc834c25e050170de7b85ac02a9c24b891f1f3081e446d8da1fe00758616ebc09cb5c34c5efdea74086c5996ea50b589f529d0c92b6e931dd7dd8576bc95b77ad9f0c54944029d89d64386408aac9b63f435fc494d2f4de3ac4da3801a7c85ee51c6b64107b55ab691f12ea7c659496c3dea643b41ab0a2c2f63dc556a0429169098c9c95d5c136e356bf235998ddc91cae716c5ec7a3dafeb7c0acb4faa1453d0a3112029ebc1ba65f3b1d8c3dd56d46e41e3423ca5ea9e32d1972351303966ed5ad924ec6b868552949cbc67855cd898d8256af0a21abe4b8fd5679827582616c438d5693f25ad0635da10a68cbfd05621430503f95d7f2679525e4f456258c47b56744fdea9e89e553573752c2223d1096a9f11e58423c9974e8499fd94445e92a69b7db2d9cdb279b14fb633bab2933bbaf1f6693edb1325fa36d9eed99c187fe604e9f6e0abcce6dbfd7836c9120e3b8cc7bb4db11faf5650a19590bcfbe98448b3f57e916c6ef68b021f96c9db3ddd3650cc35563dfb6dc153b1dfde2d28e7e31e4c8afd5beac68a108b243a3fb9fe3bbcdb5ee5ddc8f36386437b7a09bcf3899a88f0c628a07c42dfbd6e817803c3ababedf9e5c82392c34328f2e8fcd7ab6df75ccde889b275a00cbc4fa1ed3bdfb369eb7ebad9cf1693bda80d43db1e7d4ef68482248bc0874bf870d4150ff1c1d5f9e5f964a6aeb932fde55cdde09515fccf676a8e97fde99fe2abfbeee05c2da4dd709b6d66ebdd9ebd3f702b01e55dd2478db4c21f7d1c0e7f8d46fb889e8db2790fd95618c5b3fdd539e5b84ede26fb225b2481d4489fd7f80c2f0294a1f79cfa732ba37efe49070ac9c3979f7ffae6d3abe1feec2cd823617435c2f325e5784673b949a22709221d0e2f94f789c08613baec77b335d14b1f98a70f1046e69373f97ee98d14c122bad0a4d47856cc73bae6254ff936529871c9b348d6f2991f468aa7583e09cc91afe61981116843490631e0e0effa913e6fc2e10bfb4d564067e147272b2d774b5e9b913ef39e95d2f6cd6d8bfaf161a3fc6ea3dbdb5cb6346af9d5356b8f78d8571ea2d38c786c3f7f92cfde4a3dfc303aa86d12118478449cf5689b548c1fda35f3e97c13c9b3de71bf2379a615a5c5d5862978c029c583191f3fcb41e6ef986d2e31e5d77c500bd8e988aa22b81f35f743abe50a3caec4ed9f74dcca20b415b01f6be370fb53c8b4b8703dd916d47c02095ac6384fc4be1d5d9fb784ce0f747039424bf8a2424040b817716865e068f1d808d2adffdcb1bad3f89b019ca5b523615ca0dd1d5fbd295c7068c7bbc9487134b64a90d2e0e9271366dcd0b896ebdb30a609ead1458f3808e67de60595be345d54bbf64a5466c30e85df69a344b71a48a18aed4f155dae6f415d10d2e85ae8cb525a0e6e962feb116947eb1cb521319a9a41d73bf7ba9a919e54431c9aab729de8e017328dd637776cd865c38b5168240d8df0e76eadbf272dceeacd7ea18d04b375f636ef708a4467fbd5db644e44675a1afb72805af7abeb03ec53dd5023d42fd6add4daae8a814b0d6e35894aca77cc1effb426f740fcea1a0f0f46a976529a590c6c288d291f1271c73f851d4d2dce6e95cecf14f260060ee23b8423e2567d903c1d94f62b12385e3f3eabc3894163d83a1c4a7a247896ea542da34e4f5d1557d85adae9106a27c7f80aa3dd5e5568660f3346a1799036f685ad383878729d7ae20428e50055a2f8032d1d1f410f839e8e85c191a61e9112848e4568165762cab18ea3b5b50347ca3c0715333ea0fed6988d1932d4bd856bd028ea92a5c19b931f3d10deaa74bc0a66d0a11a9449ad819f6bbcc711bf78b8fcc4edbdd5424dfee591ae8de7e52cb6f50a74e68ab7e631a97f0c7da79304c28d5516bfcbe85c73bfa81a392da8782b9937a931c7a18ca88547efb40466ef40ce0288e304093fc621293a131d29d0fbc4ebba5ead2e097842005031d30bfd5d52599cd2be729754bc7bd18d59f1064f9bddafeff6ba8da4c42671c3835c54136abd0ff449bf63572053fc3210b1b00d006042b0addb9d04398796ff8c03757222746b397206d7328da61c663a01159ff3e3b8b5ae0981904fcb5a98cc67b837b6205a7aa4cc318357b83200eaefb86b3bb3d353c6336c1e343b8d0a09273c3ea8f48e66cd50432d14b981e5761fa86b980794b6dc2b60552914ed095bb8c5382e6f39e22ca2bb12ccbfa5bb7bbf670590a0d5da7b1c04e6a25fabb113767b3c0ac7a5cfc4b9de3f94fd89277155b55f6d47e168dffad7fa821b8b4d0e70c48083895660e49cf0b3e18c6e6942d30c92a9a6ce268487f7eed8fa2a9bd1a47ef2ec8270d3672f680f77e7f0c25b447006ef782d82b6bab57665dcaac506faf4746a07777aba16c4c90c083ef5f8584ced30103e95813ae308b44691c65b6813cf10d8d054165b1c9fbea0ff958ffd701a4e5d4ca610173925bad7f4c2e4a045d7919b95704165701602b8d7cd5a50b57b72afe171d3acfbd40daca0a67c1d68df9791677c2fb89d0da695ca2a9f065384a635b32e7636c76695b6133cfbafaab535ccb2d94d1902e4dd21e8bb35ad7f9b04bce7b5ed53b41edeea78caec3ce6ec82b7b9f11a3f86437a66c639b0745c83a506c254b7f738708ef9844ff7146af6b8bccbe6a7c382432c9b353612212fb0a18fc6a5caaac0809538ea58b6b85e3267bf0caad0e77bc0788fbb8eb4772935af1b521384a8f1ac4bba014e1002f6958079629caf62232011707384cd65a74dd770d6c1288ec1c302cb3bb3294bda80718d9f05167058c55e309489c55e5073296ac49b9ac7d6d1d86c6488a9bc8ee5302dd548f56741886232b176c25bd8d5bb23e166fe293cb8962fa5664b2c913efd323491b817f18dcf4edf6fc42b6a18c4d48f41c2710625245edd530d620e71c547f4df7af96af16db29cad5b8334582cdd0a58b4afca96b4bfd4930c8d726f1d3e11c65975a0703848f49aff833a48c7bad8ec3e6361224e52255a0dba2b72c6ff666f1b02f05a42bd79cb804dc6bba33a8cff5f345a09c876085a0d71abc462122f4a45ec727f8335529291b9653ba482c86515bcad74e6474034636fb055fa0134a285be590dfa0273fe5d8aba38935b47e5a6c8822aabbe19ffc38c2f610b1b3d0a512d82bd1dfb677faa87abab0d23612fda260a97bb9daac870e5d3c030acb635ce8a274485271c139dc78445ecd742b3346903c77f900933d6b90813ed40079eab9250d8feec16b24d22cb95babee20e0aa4c31f848872e2346863d3c48c2ea6dcf50055f3ede708c32af1342d7267b1ba718200d72e2fac25582d6db3a40cb6d7a971224f4f27d5afefc0f79083d04e8ba226ef4251710926ac3cd58a81b2591c5be9e497d920c3f98874584f9ea43aa7c4af6db2943759c50b0ca059d4773cdf1e527df26b374ef2cedb4377b81a53a61166c411fcbc1722a59889ba56436d3c12465354f1740f34a96040a25624947eb2959981ea8ef3358d4bb05334a8c01ef56566cdb659c9d0f4be767460922652564413d35ed6555e1257b493e7155f664bd19a5b45f3b30b22b2d839d46d35aeca9a89ccdbfd7e8ef05f0d91f29a2d714be73ca7a74bbdfdd641705c9c671586096db945a0a85bd609ee8fa2b563999641dc49db9fc388e5cea2f1b946bfe6ecf064d1ab509a1abe377013da833aca26fca338b4895896b5101570a6229830f6fe44075aa3f59f3918f343c246b4063acc2faf07d76c6446334e37c8ca38dd64b8046b7bd63c1803700a853211de757925b06721330bb0d2cfd5350f77acc9fcc97062630fd707297d9ca8c70436a3fdc1d8f66782aa0cfe9ebbf87ba7d49aa8b0452bd719425e612c309a829a4541597edcccd9ca583fcb47e0c5652d3e9aa2cb1a2a210ee585570b0cc41b85813db70c2761391c894579e5d610a52f56951100f166157af2e4195c0d49fad1532ef6106a352c93fa29a32d1e632f9e8125088ee83970c57b6f2cbea4194495c3a6b22bb769542ed6607a19090797700dda75530718c80661ad147f02662e5de13e0cb4f5a186572d0ed859c10a5a23ebbd4cd4e74925a8deabc477196fd4b386e0393010f7cd8a3e32f5cfdab3d4a6567a78b95a10695ae4af756881fcf857bf604602d131c663bf780044b2e30470504693620008f7562577fa0b4792f04887f6f38466dd0ac63948d82bed52551c0d8af52cbebc4c22fa4797a9ef7d2281194ff8afc409883ee87f70c2d101f8498217e0f19cee3a671ad2baf9153b1d7a0940550de8b8df5712cd610cca30e669ef7e4377b4afbd86315ba8ecfecbc44e40a078980c780e0d4f7c839bde764a20f8e6a74db2e62806dba86aaca4434095e69d09026d581bcf3212fdbf124722febf2c8cc4d97d91decc7667e9eae16c3bfb1d0123f4d2216970b658fd7eecdb9164b3cd53acc9bf1c9722fd2322633d08d9b7dec7989224fab0530b5bd10c5151fa7e3d18d76b7f85c68174f25c7d5955cef8d5f7baafbb5ee0c79df543304cce7efff751f79956d0f82a515f27ea6f28eed31aed3758af7dca4e41f7582e385263a8500107b1ff55528979639d2554e5948e030d221ed85ce95d59eacd108c13479bc9d14f07ea7ff44e7104c2a5a244795208a07ca5d9f259cc40f807ad9eccf20e1acf7e8f2857a1898a08e53b00a309138dc7251bec676d21cd4910665a0cedad88eedabfeae7541c774f65e93978e862b694202563bc240ff252a63ba9a65c3441ff751d262d77cb14ca2905c7cb96cc99c49370d2f5bc431036c2f218570de656f82a69d3054c2ad9fee7abe04cb79086f062024726884646b33a658733ee6c76fe569f4eec573119b95b8ac915354833ca56acfc11f113e431aa0e80d3c04ce66fde98d6f835d167ece53af62e8a851762baa7bdf5eca160e3dbae8703ab0be46ecdad334d285172b75b79ae12da3715ed8227da8761c37373e2db38331dba43acb61b37a0d98f26f67768a3804769704441f3d0b8832aa170590275ec06f8dfeee31552cbf64b2bd13716145ff5c503b78816e08fe7ab641762ba072b229367bbc7b0f731fc8aeab7c8ebd33bc797d729b0aed86ebf40b9a8d3c9ec8b3297093c84432d87a0f67cb68e3ce736f01aae41db8bb0635378b266da893756b51e26abdbca5241fafe9aefa14842cc940940a739e5dbd5ef9f35127fe2abcfa6970eee6f14edacf90cabf2e52ccf8be5f77cabb445ffb4476ee6b3af09dbf43f740547cb8ca5ccf8a0f864fc60708263f90bc95f80d297aabfe56b8bfd511f2d359552d38a0ee7acb28167ff5786d2fa23988eb4d88ae8389fda53dbd09c3374f4e2df07fa470f08e84d13e9f908a9f539f0201de4e8d51cbdb07177b3c76defe2df71a5fac7af7671b583f801e3c8a386b0dddf9d5dfac479a9a4dc8cb3e80f21636a569be9ff8370ccbe677bb7280f4b34ab22907dcfee169d72c13754d4e1801f0cecfcb6f99bb9d3ed3420dec04acc7316d4fd3e1b65cc0dfdcb7103e4fcb09327ad95a91547674761fd2e877b48905bb5197fc78cd8b9633a113a11e0f9308b8881dc977ce820fdf49d9a752100ea1958a6b5d477d6d5162aee20f1d9b6f7c93a3ae26780fd2b695530360c4983c9703c32e810c488e523fb311a20e4865cde890e0ee2967672a3224b71eb686c84c927f3f534b9f287bf06a3e757d05ffe8e12f52d78b57d0ef566f9189cabef19f3c7c0f7bc5044249c65c32219053d6856ff708494e83d0f0c05f1f77a16841d08229d5367fa47123d5930e19570e2ed6c3b4b67735cdfde94ef284f9995f5f8587807f59a0a139eb32b36af31085a7eec75a0683f0968f53ee230476f9268e8c96d48cd7e4fffe8bea4bf8bad372a6f8d1f4b7d401d5ecdd02e3ab48a78aff974e7f7017c7e24d0a179ea5de391e90237444a40ee4dd2d47a6004ea0d0c33ba99aab76094714a9ec83f9b7a90ac81c8fca63ee3cdba89e9e584157d20149f8ccc5504f9371cd6391cbfd53cb70c19718ae56e738598625482f007cb63116fe0b523122846306a1f4e4f7f64d77cef6a557d91f879691f1720a86b11a19cf2e90276dbed148ebfdc5a2d459c692e53eeb098c04814ee6dfff894a44e2b8d01782da92d3390c67a9abc50ea2a19758e1eeb4f49d563c60f5a3a93969a57f1b7c98e0931bfaf72023b678834d60f82ae9f8be75e02d341989675fe9cb8766966678ca38c3d56c69e8043440193cbc40be28f428f81be102c171cb1ba3ff8881da4452f020d4ab592a23fe9da001e59f70dfbdfedc3565ee5b16f2b3579cfca601f1afc7a9532a6ee4e33bfee286747586f745017a32de1f4a2ade632b1d3e8f53b6b36133f2967f497da2a2167e4ce58e2b25cc2a47a8b8c2343a83a583aeda3128faa8444b1593c4828c64cbff52f11645ca3c00c7c8ae86be9d4984e45ffd2f9cae89101f32ed55b58114c31c881adfb4e7f0ca68e3089058b88cb0a8ac84101e02dd9c69e2cba66b38177d1b6b520700a98d875b540b75bedc5cb505f55ead5425843c6f2583d9dd9f289752c4defc20be165e1a0a8deefee1629ddf54f195d118b25bb22e4e006b3f9fc7bdd165ee7c5c35f37ab7bf3fc9a99a81205c1de0bf486e0b05fdab75559816014fc40b7e5728b47da0fab7b7efafd2b3803e42770f4e0518abaf6037b2c7b12e2d30b4b8232f6cc13cd1c4fbbbcc07fc8e3bccd7851ac103faca996fe47ed3d3194afa355598f8d38b39c15be797817724787d3117b1070dea31f21ea9a06a2d56e1691b608f3b5cceb7454b22f2cc701fb9d96d89bf1a3f5d5443b75c2520ca81d40652d2ec21955c8d22d1b6bd5096cc9212c8be8ef1a4c66815823fa0534262f82e70581c4aeb35bcda9022f8dc88025ef0e4f427274583aa0e194f9d461ef615c4cb692cc43d68d18ce3629744078b98cfacc7bb5be9e4b0a1d8e337c0c2ba2f14f8b0d1c36a88e8f39d9d6e604203a6337e43bb64ace7161b167312e6f42c35e4340ce9b2a7c07e2d8586d6b70f1fe75d6bbe28fac76756d1160d42c691fc2d2723748f8510db7a03f4d17e36691ccf5ba32b6f33ae14caf3926ada01034b559ec5780d0581b9df6457d9a568a66358363491890876cc1534a06879e10d184cc09cc1e352478cef0a23a2c72cd85b3f87b0d4d9b21ac682b8a3f28e72e8805bda77cff4854933df18b998b4310da67eb6a60dbd20ff13e969f9ef29d6216f427095997c71a1ce7eabf71d5c0bb5810f603edb046433bb339787a2c7fac055eebae7ca7e707485495491ad778a6da9ba2de69fa3560e16fdceb5f3c77d65bc883deb30bba4abc306590ef798d19b2f785d9bd798d4fcb2e02cafd9206b1c7e48e6ff97edd8b7eff790ad2831a2090c10c44e91a6d43fbe479834c4701577e7a195d687e1a98c99ed638871948a9c4fdad88b1c140aae972725cf186cd93b464d0e894431474f272967cd399e8db52cfbad21c2de6188e6cbb858e346857d165037c93101ad0c24c53adab9b961bfac9525a1244fdcc105c5f276a9818bc4e02c595012a4b71bd26cf69960d594e8f9a54d728d9e1f8394dba38a9a21e1cba8a24569398e5ee4f0780fd46f4ee3873dc7a86f00bfb9136a52aa8e637c37c84eac7f4bbdfd3dfb317fcdb77c8e583faaba358e5d77a06f81dfd94047565dc3ac03eae7b569381602040c9391c73191a59869b6b04d309665c68d2663c4c890a19d9238f37b96acd50c6878ada2f87717764508af537cc257a80129d6a066a85abb329a1534d08f74fadadca9a4a44a317c7f3c0707f3599ccdb623812a85a41e3ca8d2aabe3caa2615f6b27a301f35cf718f0a334122fe4d79433af5294837296d4fe7f5648a97f334ce5e29ebe94fef4e8ce9fed9c8c84e9beb92f8a65f49f8972f34584952e692fde71a41efa8872615b3043ad052ba18d94f57a1c65c6b9c2168c7ee01edb7b06dfe2d641f42ba3d438764b363ba3437c2f0f19bb09954a967994cbe31df5839da6ba784f368a41bb02eb214ce36ed3d4a793b1ad65dbdb4e963e967101c05f2bffd54ae46e99d2a5bffd7e509bbb65d30710ddf6ef69cc9d805e7eb7615f76da95f48aa60436023c6b43670647467db85ef079a2faeaa2fd9bf142cdb51af5639a5fdfccea5939fb015d25e55bb5beedae586b154737a954f5125ff0a67ea3abc612089a54fefbce49b5df95684aa9c69e75b6a6fb4db9f5454fd60ebe76e9ebb5a9fb3646af8752011b22e3dd7056b4368a936672c686f8f0131de48bd37167c24fa6483f8160c729a12861b5993a22c03a590f3c9db6fe460a6260567be7b774cf418c75b92afeab1383126656ba0f72ecbe9bf009abf79a69b5fb835d18bd7ed68772d4920cd131fb63aaf9b4e31ebb941f2754b4d1db1a37be1e199c3ce1164f36ad71de698601685abef53e3e630655b6a2a57bce8f3f7c159cbfe09ac70f5163d329bb12606c630b3d4bd46f894a5289d62777c01ee0790fa08c207d695ae312c7a16614ef03c35416d59492b39c517d65b05caa244fa3e12c1da9228d9ebce75e383ce617c658ac00869721b20574d21d9b1a169dd60d187e38aa81cea4049d746bd73e09c7aec3244f17bc5053a16cff4cef9f00aa8217449fbfe05b9fb0f809358462b0c223608d57ea4ec1313e265117b6a6837c75c2168b1ec4d993f368aaccbe34f5aa49776cf4fba720c1a7666ce7e80cac1ca6a7a76767b332b03b6b5064fa3ee94ef67bb485f8a2726f20e830dd2520c1e349b7428a875dfc85eadac8d13e1ca7e5dd4f5bf9cd6c0107a2ee5dfdcc44452604ea591269afb725436e925663353f692929ed531870709c4b61641262570c8a6ef4e22c0db2e80d6c07f3a1e1397611d06158720fe935b134322bb71aba20d74231d8d296dd98a6065173ecd722bf48994a1e8e0213c0805268c78db063c05a35f11e06131d8282161813381e09f4cf8064596e9dd3e02c3d6232ad4d65b5fe36218b6b4b03dd5678423f02517462462266378e9a171041c3c7854321d543bf73007bad5a33a575e78ff02a56beb0c5ded409caaedc17572db12cb3dfcf8073a932a5db55cb5e32bf4f1eb7ee86684b2b0b9d9da932a23d77d56ada4fab51e2d92d63dd04c637fc0148c8e8ec089380c5654c9bc187ed784e57fc706d9f55f9f8b3f3fccb484c156bac01358f6cecebebd8997c57d8b2df43c3b5147c84d74a935628363732099780175662c0ac5cc9ca4aa0df2144c937c9239d2a0ec5ce75d0c1aed61faf35051bae4bb94d859663732433340e8266a7c2cadb9a1aa86021b7ad9753baac155a15ce54ba5f2edc2fbfb85f5e8c0e81e33e826ddee13d241fd12d22c0b410334e134c179f186a7a72bd6016c10d20f8771b632c0558af7c0eb89c3cd3942114d9c6f1f6bd812a36b8dbb3e55d31b8853bda159c976f4e4f374c2e96b453aee3ee5d47a58d4f3db0de2a089c35f69d4d52df0b1284ceacd3b558ab3f6d62b310340f1b8e49b7e9494a10b61d7385582b60c4996c51e73650b73174d30d49b4ece5d03d77bdade1aba19054f3bb20828d808016b498c0c327abc0a52d5760f21d9c955c05938880ea6d8cb90cfb440c2d09e0e20bad818f44f0461997be65af26b8784c8afe750433045fccd1c61bee838abf93ebb4259c51e9762511b8ecf25033c600643721a88c2aa9f1b1485e3882ac7c8cc032a023a4c3c4b393fbb109cc880c35d66a2ebc54616a303b1557fd441b4183e969cbe6a3b29be3407a8ba01726ce0d11faf454e81d880e474539ee9be635c2f7526ef807cc39febc18179b0dc20bb41c66dd93196315078ecf59d13b2f02131a7960eec6347a467dc4e54fe49c23d4bc9675031ad0bdb664d699a05de7650a708e71747196b3687b165df776c0d04a433ccdf330e9c3c908aa9c7ee9c5624a076a371b3fc28c836660784deb8d55b8b8841e5a9c853e4cfdb7abf9dbc26619b11bdf0381f52910d9c58c7681c45b4a74e81ed7a90e759a883927add3574fda2cfd15a3d988fe805079c6c1b1d61d9e15db30b589df0b411866ca4e4d6827cfcc4798d9a95132e2105eb44adcb5127cd3c82e356f82c6760dba73cb4c0779ec553aca388cfe2014829d473bf3daef16e144ecea3e7475ba059f86b5641ad7962a64585854bc884a68ae4edf9a14da65cc64192f1c7f51cd65520449422403ac565295b113baa11dc32bc66dd1d9bf691d7750c5caf2d4a265d7843d9b32257636b0b6a6b0b4ba51d31431ee2a5673a6196609204a72f96a82bb7211a28ba078bcf1edf69929b3d792e56c4118016339a1ae815f0e1c03d9f865346d99f74060b54ec5b31974b65aac718683de3899cd4d0e3cdbf3aed3e40d6cad4fa913bce14a4f5237a97ae2856a38daac4c41026f4608321809261cc2bcb4e4c10eea065349ddc79538f522e28d015bcaa6a643fd4e88a0045e4dc540bf354e531a1378331989f6a737debe89e68ed32628f2762d7484e168fa558ddd834f153e99190da199023754229d72e68028f3f2f8264a8e552859531da7f28bf20c51fac1ea81d8c31ef146598dc7713f34624bdbab325b5c3e86e5236e0a21c031dc6dec3c0fcb5c08d76ad34b1f35dadf706e0805fdc0923831069477a116887a9ae7085da9a745958f51c593ab33662e1340e642bf252b0c9571d5d0f6c90b41f599d8d1e930833d5479ede384f0fbd57b3cff6a17003f068c515b0d03d537c810300c5c80bcf109f21b1d80f4a044227750fadb3b420555713e3610d5fb4dc222030fa86353115dd23cc2ea2e8342885f94ceeb74b080d972b69db27829e5801e3efbf236c2f79e7c8f2688ac3b2e17ed222e39e513cdd794b9d599d424a843f6cab96873d68eec031b52016f2a25bcc9f4a669e36efd09033a189fc2901e76c4adb0d3ad042e891f3c351c1d71332c9d60fd1ccdcca37aba5e49cb7a3cf70c65b78e733ede6472294d8688958bbfdc79da8bfe44fc409820dae20ea699314b8da24d5948aeb5b18566676783608c2200eb1d71f121ba3bdc57fec4bd852e0761749c801d26cb8a18bb508d1e9b10e48582bb06b8b6e96441e37424ecf04056bf95afd731e144233db5ef9a570e0be2cc17f0b3a1995d0fcca8f255267b549ded3cce4b0c80f157b33369c50c05af7d35608925c61ccfadfc3ad6e0b08c4dcb894d6562539958ed3b05f3998eec7e67d5022494f3c9b6d7662e539e4b611ef5090b48d96346ce3644f8ab3b5b79716094d9f4665087a0a283a0094f25a4a512a273d4eabf9f2d8ad3d140ffba97120ba2aa1c775ab816e95876248e012faf01679314be1810104f04578e78763ba7fe7d0e07fc944993c68a137f5c7312f75f27bd11b91d92f530695a09fe7eb52c55bca48e03a77f7fb7733e704df24157547ed3d51dde6f74dd04ee6694a901d53c3cd98dd090d50857765307bef03062b76da6198a251f7290d910ac8ca9261190109580f1812739baa9d956d9d9196dac416a79529a01cee1ab4b4ea783ffd5023848470cb682768c3423418cf9b0cc812a75451c62e96d328f2e3e54656e77a4bf01befc9644db62f795ceecdb29a95612985ad16bb70e5686b2a57fa3defd26be5a4c7ec62022da4dabfbf0cf7d22e092ed2e7c410f56aaf451bfaf6f6e3a3fc96374c4010caaab602be0a427ec0c26d5b7827351a4aa8df67198cd60b00eb2f6f1983cda85527373889876f00e4b376ac9d1e5c8e6c9760b3e0e1dfbddff4f96708dae1ad73c4a1b0c1c3771d19e43e1e1e4683bda4d1dda6a5839b125108c496e50f8b53335f44d82b1d819023f910ddfcea9d4b9714e31a94c276740776e7a98a1ef58896cf63b61efde79224ae7d502c825ba7b98b4ef971c99971da3b29e53e905b5b05e50e94341cb8ea9ee741a3322c1994c0e95d9d0d3b8c8b8cacf6d42613fd2f4356a32eefd92da96e1de792cfe046b9732895d5f521b9ae4437971f84a13daa88bdd272b1d1007f5f1d33f4dfec83a8e35f6e0f3343abfda9c4f0615849ab2b449e6d99fb809a7c09aa975b73cd687688d1a52c75dc11483864b34e6aee55022733cc218ed0d401f38b0d6228a22a691794dea88d2bbf85072edb4beb410ef459b3b3ce3798a8a256cf31cf0ed402d3aba083b09ee5e4f6e77923c6289b656fd4c1d75d8d4caec55a1ccd29a20dbb2be45a07ddd58ee49a533454b4f8a777663d2ec06fb77864a46d98900ccb18cce879c9a568d2aa37a364fd9b1958e4d8379cb8c5f42672b5905702650db550bea9ec675675c8d830e6b04686d3bedae909d5a2b39c9cd9a2d3b52b11f38a37cc13c0773fa597f9b35c738e14c73e513ed25a77f5980628bd101f0dca6f45c742f4283ddaa5944596242b9e302269c97b3c14cf84999389becf89dcc36767a3a1341835f811c71095542ed783dab1d7ef39dd607ca898ee338f3a5e28fcdcd016d7a0937009b982751fea6d3272789a84c6b74a463cca7561e3c39aa77a963c69b191df3b1ba298cb69a2bf91401f4442c9e20fb9c302f5dbb2f2d77afae8cb7638e7e5d467dd687ce4b87d519a430a2180d8fea5a5542f4f68501ee64ee5cb82e636a4b1e9d5dc0b8f85041dc056eaa327cd84855d81795233faa6b6754fcff979a7bb1f5dfed786d65318b2c408a815a3f1de5d5c59a06d516d962ff28e03a7663c408ce1b1ac01f6857418b542d53b54ac5f5ea864f9e84d1516bad9fa1bbbd3713173c3b9fa9db346a5cee6a8344bebbaa17092a7da71ae482db3dae6b582acb1e7591d68c1754167268e30a546af4ab2a212945c683d2fe622c6617f4f38275334c1f9cd81a25b60357ae0be6411bd54af606cacebf2a2ecca1bd50731a8d7dc2ab61b5f07dbd460b0e110d12d038b4889704125357f53e8bf312d6e746110bf617b956d64fd9f882af4217e6a681bd52a5b2b0082c38e24ab7b652d7ac23b7260cbae21a5242a3ef02b9c96c8444677db8374796b919c72405d38b27c17f257ed14e4fab227e1d65298bc6e2b518738955f862f6c07ce44c1d99ca2c883754fd2dd82bebd4a6b1240f9e2887ae6cd0d314cd99d7cd825164322dcc54668ccd35c35bdca674b93223d12c6f2861c45b2089b8f52ef1379a7f1b83b31ed6c4e096a5523c9f75ab9ed98a25a6ac62e81b7412fca683c0c365da046d3820160d6186626d1d69795b27b0da76e796fb5e5d122afa9ef9cd10f21a01760dac6eaee27675b7c90abd3bceafeebbe793a095e5b24ab5658bddfc034e8a1add47c019770a4a8b1bcbaa07df4e6a54524961f991992e13d7ce77281eb239f71877d0b179cecc393c3a3969306aad1d8b6846e33bc0442ff5bb16b7755f7147fc6ab08708d1ebb198a93effa8050d4ba347b69016b2548025fb4ac902674eab9b86bf33fed612daa6dc5a19fb8a9411a6c0fd0d1629864569f382a4ed999617ef8a68f59cd69243f1e1375bad36f9b65d4e34a8af91df3aaa3408ac19317726d6bfa1e19c58ec47222cb799db9833dd52bbed06eb0a43b6399e313e298db8e645b24e07e56e076dbb59e4336644b42f995d60314f815f5e59ea126f12350c6534309a4657ee75d668c56e3e6de5d9bc404427b8bc42fa0053816120d4f6b830151ac440090b5d9685d1f7694374db4bd0de22d25023515b8d29494c3ac193f62668ca5e96742fe244469e763a7fb247062455f125c0c5f7e04ba26cfc6e7ce9876a3515de9a01bdcc546b170100e966323f196996a5721c4851aa46c153d826d6302b5d3d8c5f57300f861bd72fe849096b0c06c3964576508df1d6141edb31b189606213c1c42606131b4717e27aad53c1b158072a75460ee89fb27d58696600ed01c72ca628b19dc2c576846f54623b7998b0b1665894385751e25cc85ee25c9259066d2eff241503e23f46155376363af51c0509b69dfb8a63285df483709b9ac04256a36cbfdf3513398ee9a68064f9ece2a00d01ab3c361b9a78286c35e56d3759cbe17667f11de76e523dd31f95d687962bc727d951843794dc91d9491c2ad755e64d6bd47d35d893fb56cd2808705594a317084cb522c9bf5fce1fe1282479f886cf1cb675319f6b7723faed07ad644c4556f7f46989f4d55c3fdd6d8b6f93353db05bd2cfc48c5e1933fa571a14d7294fb377850555e1ed30ef8c67523329ed2c5201cbdaf4e861c5dd12c87547906878b5bbda5c2dafc6a33a039046f012c7f41817d089dce1ba95be6e1ae0412a6bd4211d86e03b5c44634f695e9fe986efb202b5cd930523864d761d883c8f45c75e60e904288f0c669753131c4447849d8e88d0ba885c4fffac026ceb8da1aed275126061593a2bbea36b092685f803e53d1330054a8363263d4a0371586672e94ffad09de846f2369818e3d11ceab7b621816d6e5f08c8553de86b0743ffad3562d3e5dae501fbb2ff9d2be7f4efffe8c53bb276f2dab682604a41d5c5d464bf28bda21c4a45d61466aeffdab28a0cb4beac8ecd8a5e9ac1315bc9d475d58ef06fa2f7511ea4c075405f4dd384555595cb65d79bc5757ae95799f4d5c50589990687b0aa2feaf6cf6c58d104d3f53303a6b20174e86498e962751029702bcd1389565406435449510e3715b5581f2e04fe56919e4b38bb6a7f4b0743a26bf3db6ff6d36fbf79f59d5b7b8faaaf845c0999cc3288e3b58a153c07abd0636a676147d868096fb466600aa348e9c49c81ae9c6bf740a54df2bbcf84ddf3cc9734babdfd8151f275ae472f9ddf6d4ec644906de52f5494f1bbbadb9dcc57497eb229b684499c089bf6e46ec989d97c96dd9ce4e95c1e162bba1273a2ede4e96e2dbf5852798231807ea27af901448b4ea3f5a48cd934594ea8210989bcbd4b17b3ddc94df1c8f5d2ef1a1a9278a0ea8bcd6645870917eec38e80e09de7a827b6291f54f5324a5ab98181f76313643e35912b327db84cb0f13468c46d9a6280ef08885e8e184ce372d05005428c0ce084c7c8f932e83df787093775b76c14a915188f6d098e5121c1ecdfa361c7c336aa7277cb23a56c998b966b28769af79e73e46193405523a6f0734fd80c8cc4bc4d8da286ba8720333e570ff4ebab60ef5f0df74ff473d88f82bdc711bbbdab2ba03ba3fdd5d510cfe7e978b9d9e1f56e78952767e34fcfbe183d7d74089e7b57dbe761bc47a8eefd382100c26a5bfbb3d88f3bfdab3cb8cabb88cfdda3df7d80ba8b57231829c69cc0c814a3e55fbffefebb8af76bd0303da402fdc6afe4b33edb9d341f74a68de521d1bf0a832fc8b7d26acfc4222dec697e48ab2e06d8d4bce416b0cd1b1d6fd567738984457e208b0839e98ccf3a8562a814c4f62ef074613899604d143e46bef7d5f22d910bf9097a1e9e802705c6000f8148b0a8a127ae2462615a621c563f300d1c7906479e497a9f7fffed0fa86b13537f61196a13d8639d780ed9ac16afb92ef00a70aacf1f1608ee8b51a1cca7d485b7c5cf5a2bd3fb7646f068bb1aef7a2012bfff169c855eb27d5c6691c7cb8d6b1ba08a3e838553c6aac98c0a8fcb77a9b9c5a6d5c88ea84e706f373c718ee15a632aa95999499589d9ec63aa7e4fd5a7b4b5ffd47bfeec5c7d864d3e8c4f47c16fd1f0d7d3d1f373f592390bbde771100e4fae7623786ee4ddfe3cb8dac4cfce270bf5b9613ea40447f7c97a8d7f67dbdd6a934c8a7daf7bc600690bfb8b31ddb77b0299fbfb594e4309426af4952efed7576ff65fbefaf47358eb7e81b4abf3abf373f557fe3cbcbaa78a46dd10c7021ff8e45d9dc77f1a3dff7fe8acc87348bda20fa14fe725d8d3ffced597296c19bfe2bf5fd36df7fcdc3326950824cebbe1f7349aaf32565b665255afcbdf686bfddea2a193d0bafe9e724e7003298b7e3b3ca6d15fb5f5d8ef35fea9201ca5e7edd4a161ab8a46cded6bd55bb9c7c648940517d5466ae86d0dc7ce02837f1a2986d7155d17eb6f128721b74e2639d6ba12aba3844dd360906a14e0339c83da3796f366ae81d4b7695d99991daa0089f92a2de76302b92bbecf2cf4811b2956ea649c20612f53c30a974017b98ea65a09fa9882f0f57e3fdeef8be1f5281ec71d7f165d1b865f88901c8443019dd9daa15d076a823f30db09d4cc8aadddcc30cc82fb483646383d9df0762ac7fd5ddd300cc2b7ebe4e175b1db51dfb6bdf13cd969231d38be756d114b6d0e9a585a7cbfa05f82a512a1e489c027663de508e525c0700d86801fb8c1cebf4f8ff9c4d7fc812dbb71b383d398310d497ba20d663d991a472258683f818bd94207b4639d8f7f14db350daaf8b24872422d3c1d9fe7ec8d047917cd1376a02981c911c59cc310e3aff533f834b3ab310906299dc09b03e5445fa854168cb95b62c2682bcb44bc35d301ec696c8401117eb31d4ed88d113e8cd8224ed708ce500e6a892d3b73b3d0e3d81f7764e0a7a76547e0330ce13d0db3d84eef0f69abef340e9145dbfdc69d5a7dba2408f5f062544e85dbe1e07a38a9f363aa03226012dd9845314155034604367a05be9815f37c2b6143b3614b3a6da280c32ee7c01bd0c52fd89a81199b6e02b0243b040e543c564ef31c2b99f7ca180b63c320531aa651d453c6121535ba1ece7831c6300ea3d3c38faa3329e3a45ef39e004bb4449fa73455da015c59c514eb696be137da3913b6268991ad1885f8031df53e7b85431e75635714b506cef69a70ce40bc2524436f37ddaceeb7de2848a309c4223c305c19f2ae2f8ab98da0b0dd0131addcc78a7fc2493c0fbdef5627b2845b766240e80536250d65b7c22c1c0e876a3ddbbb2c23fac25398fa3075c3a0278c7a847d85d0c1dfae7216d084b4d98a5d020b41e5029bf0e96e330fe9aa67a1b04737ada766db6fe8ce9b879f6b1eee638ab95012670b8e27d79b151ae750bb0029c063f0a021c61bae0a1ae233b93acf1fceeeefefcfa0d87846cd315fb0c80720a1367066f5e39b2fcefec353123d175e2c9f7be1d7d425449715e48a30ccd9d293e88a9282474f3de0bdd2d262ae4e2c3ea6aeb7ecd4d9c980149de33a799be8406807d3776a1d75a2f4b934c72d9d4b4d5cfa1cbc30f7b84811cf24122ee5e9be9b2448714c674c1ab05769571f5c8c9b3be685825a0a6279c223c5f4ca2b6a01816fd17d9d8ef186251a4c5769798dc82a9b157a80c3d183dd077747e43f694c37155f56d5fb091c9690d2aba95079e11a7fb0267284c97c495004896f36c99286bdd921f12b9d586bb6690427c0c635dc813ab676ece2701cd945c54d798ddeadb5b92ce239eb21eff7376a59be52d57327deeabc777d7b576c1ee1c16bcea406c22cab55c55259ade9f565329fc3fb260cba965971b22816ab0dbc30dc02e8d1e1bcdbbea46a3954e506207e8b3f3bc2c9ee222f4ba80874ead4dbe809dcfdc7d77c9cfbaa713bb6f84222d8f302bc16b9caae83275c219653f5323571d5e986489b5137092b78313aa404fa92da974345a72b15cdc3f4803e7d3a9f57bbd516a1833b158fb580798b91d0646e778d81b8a2e54a17aca32d68cd4560194512ef3351f06a83bb48b895e05b6c6679f1ad462c5a55b458d9d1a01e5162ca968bd33eb76c91ffe2721758870249700b4ecc107f15246982559cbc3536acc9f0ad5ef3512d7e2e513c9b5601d27e7f6772e2f6eb7146e82fc25add8cf380feacac49f8dba0346e5c83d5a8a859b900a2b76277fb56283a7a85912deeb1cd3cf2c1dbe6c7fdfef714ee2d4bdedba7ac486b5fbf481583f9ae777ece6adc2cc2497b8b62375de5c0df44ce736353240be5b4f88b611594494c2604c72911cf1b690d303a9844206f3f5f2d08d0335563c825ee7f8d625295ec11345e11168bf1001e0611c9b4dbe5ed852039ec48c99bee76eb9099b1f028e4fd47df0bbd8f3efa90b04fb8c8a0dcb56c5c5b251fb78e019e9edef49c9bb064835be2c2e4d3331231744ecc046192a15f850d022b18f52de0a5ba2174f16da0e4a41bf78983a989438f56e5265653f1098bb0f3b8f1bb5dc6f43972bce1fd790c11619c532eaafc54e30740129b6c353e1e755ee99b5fb2c28a8357a1928b4f991e9ffede8dfc7b6ba6187ba73467b11774f570b5405fde7809897a1353519e22ecd8cfcae22563e933daaacf2e7e8bbcee5bd8cc8545b7b519cfe660b386b1417d3844b08b0bb169e5db5e1d50f9de57e33393e7ecf58c40b5a71a2599154d88d4bb2af98e4e241c976553afcc4dbdf2cb8d53ce23de1cc4898d2671de9cb4a0bda50af9a42ab504aaadc0a78c6079ee99653ae6a6a751af61f5cb283efaa5ab31f86a72ec29c256bf4ebbdee0e436eaf7faec4a3708cb6ad83ebfa4686922e45a095afa0b3b19fd99095a90453d09aafa9a305df1316f5f452a34576fd54d10c924ca19b28748c3da604037313f7ab6234f1a9c86171a29bf50d6e0fee210bca5f68924d39d9845df0289d12795207bafbccaa30b1ccb65ed007270d821f56c84adc9f832667d27b660977d265ddabd95995e7b3a331c66da928170a976f0e546f347d8ff463d18dae35ef004bed20226574eee070ffed985826b3ebec8f80db487c5cf3cc741e9439574bd561bb55577ea5e3d44e9007a30c0a276d10b3896a9d8b64d40066a359e313bca2184c79da4e4b21f7f4458cf353d452ffa34fe0ffbfd4bbaac3eec7f041e3dab89de45dfc38dc65bf6f37d17fd80973b7abd0ed475ecd74ef83ddd7c2d1c866fe8f0da334d20f0be0d1844f7f4a1bd3cceae2da60f326527f02c1da5a18131899b426065fc00675c264241a8c723a9bb85e948e83f44778c39148424de097cdcd2036f3e9a96ce162cb46df4a07085771e2039a43a34dd4853c566d57d5c460603a159338fac340659cd03ee7c9aad55c5a5c95c0d699ba8b7a3205cb94e4de6d8a20f6a3b2a2b05b6e4c3879359cecae6be8e657b6b5a34e4b757d247ec766a7913a2ba35bb48731aa134c4bcae9d9397fac8d9b37276662e37e659b75d6d2bb631b17e86196b65c1c0516dd389d11d551ed352019779cd84e031db0a29a3e7202de367573477a08da51076ad451fb12ed1abd85ad778b17ca1c203066ce05566a91fa16f7ca6e51221d85365c06f58082b20530694e54651ce84cc6eb3e368a9539800b65e335643e65f584600810ecd05013d19d45c64dc6f9235c25bbb8dfe77753b745d55bd0ea3c8a1cd03ad02dbb198ec01e2bff78332f8f5c064abea6ab941bc6de52a6523be869b62762f242458e2c479374602654a692f9054d2cbb83d26c09e76565c212730015f2d97c57b6c528eaa52d4e692ab6acc66d8f07561d42338f2946690c044ddc84eb3726582d0c4b2f3c53104beb4ea1756ba3838befe5973fdd3aa8566104a5377cb6a63d59991d585b79586d98e553c173d0989c58848de46a5c80666d77a1b5831ec135a1fedbdc5e8a2ae37dadfcbd6f8be6b554974c2377c12f5c15b75c3f9501241fbd2657e2536a61f385e1a4d0c0d1b88a58c16d5123ce250ef2207379b172d7decb40e066bca5c97bfa7d1f9bfbfe89f4fd43f20fe1e5e8d9e9dabd76cd21b5f2d29f98d96d989428451489e2d20f0a34ba8d8b1a48f55937f7ca72af34df1382996c1f9ac4448fe5967a6375cd66b585cb1d0871075bfff8751480d62daa1885f80dabaded02354b6ce792ae214786bd71b79aa10f582c0b2aea93253a0c3b118a80cdace19d4d73cb9a4816da6e0ea527889e51a353518b59a1fc1854451fb543b3c6910a7be31854da1f543b7c1d098898e2261b3fef88faf70add2b65962f05d8f88a4962f69c03c072bc149b506b3cbe20379591154b9e4abe3ac1046668966a869bf533f807f6b5d149965aa442d9143c8a610aab449b613ef384ea419cd143b48c4e2963eacae57b3a54fe460c9d5f83b5dd55daf7e3311789fb1be710bc43024ba38563719655c3847d5a46320a7f5aad0c679026a0a2daa2f752aa0c5571ab46a0d398232da8b54ebcdc37baf024297ac54d631106cb6f5bdb0b4e43d3dfd511f838a05392256bfb1e7c32aa9695bcc7de727f329e0289cced85cbf32aeb57cd56f7b262cc5728764412c46f1598b51fc13c6108a518c12ab92c4aee86b5a51281930ea15b664cddab33206a78175650f3f4c379195aa26bd8ade46dc58de0ecf8c16909c9e12f8a27af740f9f6a054f70064c2e7d86b4365403a67ca7742ceff670a7f2ecfe8ef21fc4f89eef8531af5d5cfac8df04bfde4a19734a909d4f2e9e0bc124650e515ec68d176f3dc5365b4f9121c9d9fd3e0e774988cf431e7b819cc88596db651a7f30b5439efe9b27bb92908e6ef68a36f615ef04b8a1edd708f389bfa2535b0c0128e7e0dcfeb242e8b0eec42b45275ebff0492d509b0e20849692978cc703edefd89f9b3e3de6a8d9b48f88e0933a41221a6f1462793b70154f4b7dbfbd526873d245522429a52865849043de724d0eba0145b9f9e8e7b758e735b9a5f16419b95716743efe733cdd728f233e0121e07fd6a4b8fbc9fbffde6cbdd6ead3f68df858548b04b6b11663e8d9b1c13baab10dc139a5a63e10724154e93486ac525187bb82aa75e477263590a876b0315b2df837c1d3ba43b0b743527ef670ef8925a4abfb75a7246a66b453d9295e5566baafda34eb522f4dff0635854cff2f029e511cab3e90662dc73c569d4bd6bf6c81055d3852332b3f5204d33446e6863469e779812484bcc21666d8072c1e28b172f3e8cd84dbd3f8d88ca0fc269240dc52ffafdf0a3fe47876b786013a1d3b8d72a24e1ab42efcdb83e85b1eb2928085ba78da7364a430088ba2c8110012253dc337ca8c69549b54195135126e95537966b4e650b3e6b2df82e4db62fdfbcf9c10bdcca2a32382bd01512524b6e4bb1ab3aa948668fa417d9a235fde1acfc5211e0ead6a008863af7c81648e2794de0ca92535d45d84a1e0bb1fb0ab71adc631dca2bc40a3a7d4b2257c81d834a25c2e866c3676179772e6a6082bf89d10c13df896e361235a33aa86d6d8ff53b9c3a4bbf7a8fcc450559e3e1811d29edf78f752dc276a0cc7c8a165537c30121c258f418399cbaa4be14b93edb4519197fed1bfbb1da401008309ed219c0d515a56d87a1aa090dfcbb933ae769bf3f4759c2540ccb56bb764a2b708b7bf3ae6644f9f8b8e1961b611b660652807a53f8f03966553270f6b32a178156c121f98f1d69ddbbc6c9c63afe96822248b2e8dc8f82abd88fa3d3fdb3607f155fc5e783caa1034f6b1d7a9996538bdac1da88ad9b81967e4bc5b51b73d8d819f8aaebfd26921417b5841c166bdc7a00d0066b26acbd8a73b47ac8c8b4c799ac67c8ccac14ed8220f6e82f4729ad02fe544b4d3a7e452a22663bd65ee6bdfa26407fcb06590845f80e7e4b241c5649320cd04055d9066c757a95c9acd163d58fb0c2af24f860915452d4344ea1cb883f166d4d3248bba0f31cd6662badc9d8ccac190198ce2e241e0e98a314a6cfab688f8ca226dd3229b58261a5719f6c4f96abdd09b61173ce27340507559d924818a8ec91be8084bca8d43c2995ed0f2a6ff1f32e059824e6e1552737ab4dd66fdaa732b4cc26e2d5c4ce3dfce38ffd0973ea26d1b80cf062e1941b23907564d8415e9d49cc886b8b9e7852d1136f3582d28ab880edaca6f228eab860ea438ccd21f4e0b879382aa36f0fd31a58450cee6014726080f48e60c5179b64c25fe8f831b92b7e4b85c6a749a0d9d080c9c7c816c56652f843f8c97378559a77938af34fd6331fd8a7b63968f3a39bda78bbe911f79f03d78c9abf418dd431682b8fd965c46689466320d1aa8f53655c73b33f4093dce748b175e6879e70cd1d0fd31637da296bf6793f7cfffa0db6b0359a31d44b85ef3d7678dea25da675eb825a480aba6c8b726b53b5c8ede731ddaf9fe4b3b7979ee5e43a5b0dd4339b56c34a0f6c4babd281b8f355827a22ec910c1e951de54ca0b2b0c247580badd362650fa59c5f9582115593aab8f2998ae4469562cad17bcd91da4c70dad8a0da436ade2e769810bcf3ad1f5497516d3d0700024b0408bd705af10b5883c15d1a488cc566f3acd2de6cfb134dfeea1e0cc024fc4bc5854f5cfa199915f7a008e4da971261e782d05a61d3b22709e1c7becb8980a3926682c8afb6337174a9e61051046a09e52d0f08c82c63f9212381c2cb35b9236f53cc13e0dfd0738de6ba17be38f9d655b3084ccdca8479310662761dd1a5986e57f3bb1db38c6fe0c974f640d01c2feccfd9f806136f176a3856b35170797601016b4ecd997e301d9ef7e06e1bde97d04010fa936ad46484d0a804529e21a9716e99b1989ad004191f6ded6cafc7de9821155cade5ed6c8abfdd4999056d731e3ce877ca851f5c7a1e4c0227ec7490ee5f7e314d2d8370ce53b4144f220e4770555fd1e05dbe264bcc9e8dc7c223b22bbd583dbb638cf7e9d43844132f814f7061da571841d83f94fe2e7504b8aa108b1921a577c6717dff23122fa14884ff6f99f51dfb86a50d4af533440ca72979399f51de7f10ac24dce26f0c898f7c87b25516e5502b54dc51de055d76f737297e9181b13f6213593038039ac615d01bef001e9a6c1b53f2e77a49041f748ae215650f41981f94d98735bbde8ae48f4f617d3273eb3c54db7fd80320a725774f669c8ac3b2b659087dcd719545fd41cb94e8fe7152f90a2e9d19610de526e190ca367837cf294fa339b39c53c213d39c497c62769d9dc9a4b5e4c3049519f5e2c899e1bacfec00251edd1bdc071db318fadc48f5f5aca8dad3e48772c7fb2fb1bb1bb3b5df67991195b258c075fb24d3c43a740620b6c04e969dba755ae6392a3f547d8cdb6d05ad7bbbe33c6577aaa4eb3ddc88072d5cedf35f0c31190c1a6ec1f3778458ce0d476d1cf14d34a8038f221ec7ac653a8ee1373e1c1fbdd310ae0a86548cc2fa94dd1e363f23a4631c384788766aa1b2b8089df43720ef02ae02519bd81f7b1db6317cadfb940706c197c9bb63da7394ef351dacf90f7aa554abf1720694edeb441cff7d9958876dec99b2bc6aa8ca2ea25886a5efa5c05957919486c6f393e243106a87504d4fee52c8460167dfd85e3731eca2106ab0a1b7badb71b2539e69575ef2dc5df27259eb530812c031f8b7b83347e0c8d89c082624fbbdc434894da0c8509fe8123daeefa68ac8b389d14010787cf3780250697023467bd212ed618ab67e81d8e059690ff270a61c6913a1bc2a2a6f26831c4893a1fa56361e98d564f35f39dc18d804eaf612b64ddc88202c48aac6711e1ac6b2dd9cc68e1d26fed11160a45145c9982cf3d7c57c2c740fed81cf40487aa6a413d9a620d49c6e5bf9ed258bdc3cfb9e0832111744b5c80bf5555e00bc5fff1d39d518cfcf068e7bbb97abe59828995dd486e7f69e01d831f6f72c1a67129e44d765bfe8d7823e2f0eca903791dcdef6336a58204730f8b77ffb7f01ffa3770f");}elseif($o==="adminers.js"){header("Content-Type: text/javascript; charset=utf-8");echo
fun_adm_lzw_decompress("78daad586d6f134710fedcfc8ac589b267d95c1c20109c3815424a5f14b5a2693f01b2ce776bfbe07c77ecedc589a248e98796a002a12a85488d446943e10384a8a2a40d25fc99d80effa2b3eb7bd93b9bbc48cd87e46e677677e6999967e632328234a361da84a26b5efbc1cdbd37af07e6348a74c7ae965109d9a4892e50aa2d28d98901b17819372c5265f82a48f1a9b363ee3c96244ecdab3b4d21ac6a964726c4698e4b6ccd357b17bd1b9669579da4c0f47cd77234235e1d52aabead33d3b191925d1c40f033a4e041b895119b21a6552c82b32ad1f4baa46904aafcc7ac2a430aab9b5e566d9a06ab2b593489ce8d17241571a8ac726e7c3c3b8122f992785a021cf85ff16b6404b95a8d78dd3771071e043ccb62152cb2885d637534850a68781885d2ba69908430b622a552670dabe750b198cde161bbe2b913383028b519a91cc28643f93194349c39a2049a4bb1035d935d55777c9b254d1ae8638ee642cc0c054f9ab6eb03ee0b2e29652a3e638e9d418ead5ba67ebd94d12c42997205b797dfb47fde7a7f73b58873895b34c6a88299c978d472f80ace6690782b65a23d1934a7593eace4700e1db43b8346a650128ae358ad5b9ae795323c6b2119633bd6763b1b3bb0b2fff2456bf54964cdeca599ffe742ae4e499512af1e5dda5ad96e3fd88aee0a5f47a63e700f375a095314646ae005884428a25a904b01427e422a3db900f8f1377c421702597c45ac93ac5a467d1209970814ebc1c771c30f382e28f70f179c54f531ce212a55c76184e26c0c96472ca2b3cbb6d600380d6ace119ab9cad1a96b762d3224dc0fe4152117bcc71aaa14b05e7c251429613eb591a41ed55d7c9a488c83198b3321cf1c0f70097929487d58c53233f1900ad5249b85bb3123f30c4fa4884ce63bcd302ef2b40c0dcb89ad2a73661c1daa79c669127a51f30031c995089906b1fd32356b751601a35b8e47ca1e44bba2d15400216ca6d0ea81112949c68eda4629488d345b43dc5cd386a8f7cb5424b59d449ef6246afaa89e2c453d1decc0b6c09d14407a7ea561b243fd4c8657b36047c2d350dea5f10bb1d6441f259d87b1e25083d093bc519f14cd0ce7112e40ab3e744b378ea07dc69d479e6399061a9c9e1e2f9c29c87b7b10ec75218f478f78db312d14d3c7070c44bd7189c302f09783ba5670fbf96ffbefeeeebd7dd7b9ff0c5de88e401ec239a0080f4294c308fa50fbce666be7a7cee6e3cebdef5bdb4f5adf6de7d1dece46fbaf6f2f5deaec6e14d1e9b3e7c7ce9c1e1dcda3d6e65ae7ed8f45d46c36d52ae48a4da16135b837a256a2d07303c4bc5206d2bbaeb83eb5bcfc5c10eea6691b4e133ab7ae7165b50e0c0229279472019b95708ed8ba63906fbefaeca2d3701d1bc850990b600bd82720d2a5d4c5beabd70924a253b996473e3f368f38c0fca1da30c6f254b30d2fcf9cebc0ca814d909ff140d6ada43839c9bcc9a20ed4455c9adee2aa1be2576655686c80fcefcbed474f5a776e76769eeefdfd4255d5a8bda935c23e9ffdf20b45d896c360b3eff2de501a1d0e0253924234ac83bb26703bce7d42207e02b4325f0119f70704fc0fbc5178ec3a17713695e92430305df9e03c252a479bfb8e1de02c39eb41cc275f933622b756b6daebb7a06d776eadb4d79fe7d1fecbedcee3cdfdcd8df6dacbd6bd3f3a77b75aebcf5a9bb7db2bf7dabfbc02c58f53c52ea6cad6bfcbada73f741512b221d5753ca68441438b02a92218d9f06a79f0d513cf104a2ca2888bdd602ee5a52ea3a52e44a83bb281602225885291121e5445845f623f99fbd2dda50f49606e6638c2e249cfd56ce4b1053efce88ee5d0628d126267a65adb7f76deac0264edf5e508cc1368b242f9f0d5b9ff88c3f7f0f5fb87af8a28117c436310fcc9117ef25482b1429a1674902e8ca853871f175dda11f93a037e4b49da1f91438a4f949def2a07d739bfb41c267e19da4d69141fa5ac39a1754f0e1232f52916b7cf3070095e15c8035f5760ea8c214b4e55f049c0a7088d12ada7d7f6fbf88b4a3f91047daf1d2c14c60bd3d347bb3959a0077c768a90cb40c9ec0f491844024e801e42544e3262391537798e5164460c177b3951d8cf67a23e9344727e153034345a33eda0abe1b3c90ed83b5ec196c5c49ea2e89a4ba94bc09532d8e7d78e7c4dc2d5a8446739ace1d097ac67c9cdf4ec75989bc97f241cd7df5363e78fef71f73f1547f2f953f175d5f3adac5dd3e69544898a99a12c0e81f632cba869d79413716ef06f74c12ed078782b820ce48f4a5622634ae013c96359b4986c3a621538c68306ef91afa102820cfbe823fe65003ca741b213c1500a4639d46f0b2ce32c4e913a1ccf7783a260869ea6d65592121c492ea5a93fcdaf79dbb7ac3cdedb7dbabffb4ffbd7d5d6ea5aebf683a8cd07e4fb1f03dfa008");}elseif($o==="wap_page_bg.png"){header("Content-Type: image/x-png");echo
fun_adm_lzw_decompress("78da9d9565501b5e978771095e5c8b3bc50ba1b8157777874271d762c51d0a8440f020814091e25eacb805282ea54871283414d8fffb717776f79ddd3373ef99fbccf39b399fee49d4d17a4b00a001a0a0a010a8aa28eafdd3c7fe7570d0feb9992580e3ff346a3f25133f7d4f27bf405b1f471439074f3b474655775b67473d475b8760ef71474914142a7f55453983a0efa7454701ebaf5f286f0450accd640dfba415763fbfe1020b43b88ee78dad0f53ea557a22756e898a28c01851f2a7d53f2e7e9fae0ded5cec0e27ff9c297efef3b3f8a574d83df2a4e164c2d83adc70abefcf01f87933e2e91f826c7b8528121313db8a7870b7ace97bee78f4f27d7cdc4b97b1ea8b787c7a7c40b642ea93672052b0cc13b5f01aeff666f8a2f931c0b3ee4494377d390fd9e651dd976251fc4fbafeec4eedb19ef6f8b2e04ff39ab6d4edc379dfb28e68e5bf0c9ee98c8ea5be5b83c77a6a44e8c917a2b6e23c7e6bc470679f322c5828c8b281a71bfe0ab1668a77b7fc09d9dabb1ce38fae0ed3b60cbe3d369cfaf20ad1275ab20c0ab0f4169aecee4577ef5ddcc3c4c0aefbb3dc15e43fb070d7e458a7e2b2d8105653756cbabde71364dff3f114656c30a963a9cac898d406d27a8cacc91d8af1a7bf40cb40e2d1a0f03c35514ec0e4ea68287fd5989fc487c449c14e6ea1c8e9169317f7037ec11904f652bbc4fc30eac549aa2f4e079028ab34fcc848e30d0b46f8c97ba06fbdb5a99514ce13794938057128872776989deb2360aab15cabdcea1b3c069098678322ce912970edfc52663b35e18ca11970513e822aea76b04d476ab3749bc9705c654699ecdf4f5375a0c34276d928bbc9cc9d0c4d192f5b3182077d08efc71da939efc6dbbee6570fa8d4d0abb01dec4ee397cd7a30fd85a64a8ce7a4a36ef7030efa78d9b669ccef44e06fbe812f25c86c322959110a2415c0f464340d90dabaddfd8d1e8524b51f5c892454d9be4f19c1d8f61d8cfe60dbb94b9afc234e912c4eb322ef75bfc0ef4fa7b634b73b4941ec62dc6328aa230dc5c7cce0a287961d9130d4f4133e25e346dbcfb903031c4023421c2d01d480da5ceb98fe0a7ab5bf195583811d263c1fb73b0e25a398a2c7fc076e374c514383ae0f08aad147d13664596c8c031504755024353e0ff20463eb456aee72047ce4d97e65ce7c9e79da61db4d9f53db5313b8b426e75289abc2cb4fb2be4b80afbc7a7aefdf3312eb395078cc9f3f2a6ed377434032e1c216f8a55e19ee2d8bc99891ff8d157323ae48804db97a8ef53575960f8b6359e30fa77e9c6f00917633402f92507f5f0b9327505ede229e10247ced10428c2b80ad93c0ee92be844a7760c4f232e2e98fb34e5229393c83ff397af8fdd0d6cac6a865dd281e6cfbef155105b9cbab65ff11494c30c6ac0dbe7c545bff0571988fcf4a2d8082a8e97d7512f9b74a14ce8c4fb0c4dd5f196498ed9574adcc7f0af739cc64ebfaa36c498b17f156e368404b5101f868d95a9604f763448c446329de91554de693c48359a46eb61f40552edc85abde79232d510238b5261f9e2ef7bea264dae9ee04dcefc4bffc5bf58420c65c0d493501d56d7eba57fd88ae879e562b3d4dd45b1d4140224ec89a062052cf23b9c28919f2b42974b15f078561ce0abc4414ab3926bd13c022ff44a09ecf0d9125538a9457e46388489cfe295f0232789b8f526e4ba53ad354b6c8eb6809e0e2ab0dc154c47bcfa4656429afe018c6c2b931a0c8ef45c629b7461b1e999c42e45a9b2a20a4be5db9e9757f54552cdd6c360caa1d7a584b0f637b69fbe30afd3e95132d47aca021761831383e80cf46df18d0d64e6d1fdbe652d8e9a4432aa1ae66a8c534eb46b4c270ca52f1426c8230588d256f60875907e832d55babd4fea30093abcf042f23d64cd6aebf3a76de8194e87eb0b3bfd96029b888f657dad88a2cc2a0b451395b90632019bf048a946d52a5ce371a6cca90e7fd44db96e48cc24647f5aeec557a49d4c0bd384e2dfd4f04d45ad6a38161a428c1f7ad6f15884705caa4dfccfd375bc1055199a7b848469b23cd4ccddb111b141e359b49af41c59a21a8a09efcfb622e448f0ec771b6679350f570514761b87de825d32466819b363dc93ee906794e37a1e41e5e7356670b279364e9b7b1323262e5c5413c41e185dd0579bb2833dd326915e6b357278f97a32f37826e2ac882cd94b701f722a90d4aa0131added76cd89be0314069ea26c7913e834593ca68c9fc591a60e0607fbe74e7adc33fea4a6a50dc63cd8f93a06ad71ebe264144e96ae68f11b8a62754715ebc86c5bcac5aea582d17d5f3c3bcd1fd21d8fb24d12237e3403a902587339bade41809b79a6e908fb57a86e47864e200f19a7e97b6618320392e0e762ab39e451192a80cf91402796a843d95250acb50d06d332dc8c31510b5ba0f3c64709a2ee6b5f31add6d35079c6f3de669c0c6b680f1ef3f37ead7d76f3b3804be4aee3d373bb06402e1ab9a524d4c4be485af6e34eedef00de5817c91a1f7355c9965b4416264e656f71c6ac6cfbd195cc473b4b9ab0c0ee7058c4b2aa50983122fb1d092528ef6bbe6806f661595e412a0834e3fd9c27bd335acd3e767d796f7b6fe22c043cb4fa6ba4ec252cbc0f992a4dc56162b97bbac978b77ad98e1d5d235ef66d7d01b1b0271c2f1c6cb8496dbca498ea1a03d632fed250a788106a666621c0fe422d58850633d198a068414fc74cbdd65d3f1cb3a10b2ecdce491d6f31e9c3c04665c4fc2a3c33884afc24ab549f80e7a9bf665f7bc560644ccbabcb86cbe571c3a480dbf7848469913e9ad0e6317dd7804406476016ba112bca640fc05e49b82657f7f11419ea6d30266c0dc5295a53703203dca74814087259e82dc9aed00988b5c5f4b5da1e83981fbcb9473d8f4c7cdf30e846ea08adf8b3a71c9b352ffdde4985fce688ab8187e87d654491fb21f74b2e141d6c28286a774f991fe477d0b1fa933e7d65d1a4bd9559bbbd8389c89c0adbf0c5988b996bf389cd42d2643635073e55aa3c67842efefc8282c87bfaed8c757abb601fd05ffde220ab779b0180cdd7aba50866402b9365f7d32b9cef62a50235b176bc25bad4e5f291e8f828eec66da9dc7c34ca5278de6e3e27e1b359cb46df6dc0d26e778c4ba2a0b2d7ec2df921e32ea33d443a1318bd9d84fc9a7b586e961f580f875fab4ea2947a103fe5bb48c2bf81a395842d9459f22c5b3703cf37130dff34ffd4f1f1d4e4d079313dee9fafb65958aa629149da3826dabe5b0e2a4ae3b1442716011c6059793486959d0df00a590c561b171bea2dee1328eb9009b547fbeff17b0105f84e5f54e26609f6b9c04f9cf479393b18bd877353b67a32482b66d07096d732cfb1ec0ec977b5f6f8c344610be8254e65beafd8d8d7136e937ae3de53d162977b5f6108f2da0acf825e98cd37ec64ec8e8857d4943d881665bfe37598acaaf822e8c5e8b167deef992e6d1127a782059fa4dc67899b1ab85d56387c3be2968c3a6dfe8c89a6d4a037adf13026004d615f624315dc0972f0c828d7727086c537f796539d8e65f2b9bf9f265e62ac04103948930b1dc57dfd2ac747faf92b3a16472e0639770f90f67c3e0e6eb07cd33b88634b0afbac9750593ec672e2f740b39a6f4b2e0fdc1331899476196ebe2918b532718f13ade5a0d164b75fe8abe4687c4d64b0a0e240b71a43327e41643c3a26a93e491dbbf399e8194dfa5201e8e3fad1760547d133172e5ecb65d84091105ede3e7406b4b0b4147dd9b91855f01321eb1926dd927866f75905c88eb542493fe190d4e3f2b19b26696ed24935e478754e234c277a3beb691158836dcdec347d7cfe8eb3a2b3c63d5372d2c6ac870f124f8cb42d8c96a3a0b968d5ce0fa52667ce0ce2661bffec008ddf72c648fd73f178b735d3a64a0d3e662abfda58901a43098487e6d64d2c709896d822de2ed3b10bbb51e8de57b0a6a9252241ed7606d1d384561c3c9a61422ccb0e52f1833f5cc2689988a02234de3606a60c11cfe689e571d85e29e5596be33d067462a0743df54be1d5244419146ce3a056f81c82d8f5ae755d2aebf6446bffbae5875bfbfec023f83e5d6b24c480a85498f29d46db0850a420b181bb964e48231b8f6db8d9bd9554c9ff577c9484ff5afea6a8a78e070d28dbc4a362564d77f8b3168d938839c3c1381aaee99e48c04cd693a86367a70bf2dd379d034a2677299cc0536231deaf9c2529aa8af4b1275e1ba41e35843f5252ac2baed901929f1a672a60d71b26b697587fb78d5fbe64fd7be4151e2ee5d6d810e0425381c64c107ac3275bc3951d1544ad5f10c1c567843bde4429d467b022464e3d1f20e7b8da051d73e2435a30191d5b8c1857533633dcd30ac799d3a09733efc6551ac83bff727d6d8d8fa65557c098e430f739ced0495423474e969857ecd8b84f523dbaa746752c50aa4dcc04b0e954abad67eb01915f2fe33af29fe4adae33bff4d4f7d0e0bcea5eed5bf193d8fd744e1dd2e8e15cb1bba8cd8e5e3b2f402ac2b4e0a941ac278d1c91c4c859aa44e5e9ca9c83eb843ffc3e65e44abb4ac77fbd48807e7ed32f27148d35c96a44690be1a6c83d98dbea1a57ef0a9223e32f7b9f4f9ed59ab46f72c5b71a70ec0e526dfca3bae9edcad1cf0c08a477bd12b0cfc7dda6466b72f5e966f6659b1e92b94998de69b06af63b90e65bfdc8223d13c991c06f86fe986687d358733836be46becfe8f253e0c99eb0dcc297f0dad13f43ba8e6e9be19167089a47bd95b57a97a56884ae61cf46ade7c3bf417a6163173b5d606544e7c67e371ed101d555f5150f47c42ee1324fe00489e97c4dc933f84c4fb19fd12e46f22143341642beaf459344787a9462b83167d9c4b55eebde0524c9bc450614ca21452587c6b3b1f24aa447435b238484189bdfe38f6537c4a8277795e295a76614e7d73de27f9cd32a2a6ef7aa1336ae329051cf6374a9f860182c4680c923f169ce467643ffbdc99e5f01f70f378c77be45c9ce4ae6ae6e74f0ebfcba43b64737684c66a65b66f8932c336c94d5a07e7fef844e112b3d75041bc721a816604151937d37d193d5987de96c10b58e87aede6c96b762595a0a83c1d4d92afd28dc00f11305846f678c4d884f0ac76987e2e6d36c76b475be63202d14b239e07dede519bc09ee34c5bb5bdc48ffd367d24fc4bddaa261dffc66f4992e9148e491c10615906cb020c777dff855445d0bfd7eac0a8fe477a453931d452e9e67346fa7e737fb200e9ae1a10222939ba8d6945931c7d4e073a857fa7b401baa5fdceb4385e58fa5a993a17c8c6ff485e6cbeca52ead5862321e1ca2da03e367a71fb434026226afaf06412f8497f3efe00440799e7ecbe5b8afd783ea797370381ce2541f3b27df9ed576ba380066b250f75efb4d9892e182895f35ce61e25797261d7431807922af1fec60e81b74ace4daa48efbd60fc8278158a89113f5b9554b5d05229df96d85a7f894c7ace219a0de3a0da22a2fb7ec5dde62259fb613ef6aa936c15b5d5ad9f427f5acf0d38420129c8a7a3c7626967fee12090d5f1f29eab84d53c9a2d9dfa055d79e946e93436e4ed8e6e6709c976065fc3aa99015d61e0c38d989da19a31809c9948f395d05fdae98bcb92347f71db14cddd5277b5131095131a45d5d2772e87e5d8523336508bdb88b77ece4e424712df76cccdd1df7068804d6bd956846607dcf0ceb36762f791c1b1d0adc0a5f3e65554e58178304a4556c29059f574f3f532e054f1b6ca652f4ddf52ef3d89d9e3406202657c24d698b67522cc122a750949de954af3f9d115c6f729daf8631e209e2ad23fe54e241099a3285451d2ca60177561fecf69b571e8ae1f9f853fb9fe410826383c6a6ba2994d458422a9217dfaff6a30d75bac89322ea407a1004bbe646dcd3a5fb617666a306e68f2ad738f69eef770eb9f796e851b805fc67121f646849b488b19641b345b8e134c5a689f2278c2e50536d84a650a105ab401c0d991c7d5ce80f50f9d9af1b46e7b19cef31ba3b5e38030e6caef5eb1af5ab2d5268bbb3b08256d295762a0195850a4c4c51b2d71d9a93322f65caca8ac2bce3b4e83c37bb8f7aa3585acce438c0ece836c0d8339c19efc9e4776ac47547d60a0658443f5db97fb9be48b291ba1aa1afe0d0482b7ac54c0401a550f5bb731f813b2fa084cef22121cbf3a155b4fa4ab3d7070f181f8fbf4c3f522c428454cba83fb1eae7d84ed44fbdbb9e8cf0c53ac7dec782cdb3b8c0abbd6dde59f368e75761cf275f6d1e2f82966a3edc98fbb00b6a5eccef061743a38c722f314413d175a7ae2ae49f43b190c14fd9b6e6dc1416cbd2329d1d7b5c5774f0bde1f4dbe1dc262c802bc8f9d0b5eae74bb65d7439748dfd60d9d0f4d557134c373904ea8e139d750ebfece39eed18347d371b03a054ddc2087d9cec19bb30d2d9f15d8fc3ce96744f724894d1d12bbd81ace0fb6cefb059f47c29cdd29c2e87a4aa3a7122bb95e97de55e3cf09178ed8453cd8c9171a690b265d8ce2efc8fe410a844e2e2bbad3f547ef64d6a2c82249bdce95a9c69817ac493be27e0d9b57861b839a55d5c5b13bd6e709abf27c8b97ab5e0db8bc365d039257f74bdd66b033d9adafc5ef2cd3468f130d78d8d1c0cefead3d56695088bcae4b86b161f9d3a98e7543958217ea898836e9314090c998713cec33143bc9766fbebf610684b67312c2b98d78b956f09cf377bc07536211012c7ace1ed9fa50cb7ef01506718b98df9a4fddff6a8d600859754d6dda259ae27af8e6b3bc21a73a75a15cf07978f1a25224ce952f951bf515275f98ce27c25fbfac28edb01cd3b0380ceeb5ba0b2a14426bdcd09595d9c983c22cd392b4c7c571df55bd22864f07573362006cccd19bfa7e5d82d77f3a2e7f75104ad96e09f77f2594632466df57d419a18451a6fdccdfb808fe66ff4a9d873594fae0c5e080700b33dba4ac6f662cc01f7c2243334af9b597ced11028e606f2d3d8a8faec2dacd099b31333c93c2d2cc60637bf0907a1bdd9164cd23ad9146e88a687c5a57c587a27abd1920ade0d974c3a1f234096647c260da1c6da919974c2a7179608e6ba59ba4d1419cf9be493bb83e32ef6318558c6a89a7c5ccb1f2d90d94068df620aa63a56e4bfbcdba10aa5d7df622bb71a993fdbacdc58beaa38da9639e5f30548429c9b11e5779b1c44a80259e3d81e619556c321e725c62e19f2ff97745f16036e4670a05cf6c7b6ee578ae41ec4f7198a5445dc0461ac93cd1f808089ab451666ff9256c667afe8774800785ccb6b901f12d9740bf80aa425d537a02360a375458c9865f0261859f5a5af0ae9839d2030a55865d6d4eb280e209055c36d0002e196737dec97430e342bef0bd8ad659c499f5436db160654d26aa1fe9d7297882a847c7451599baf8277fbd84a51a8218baced31e98ab530f7ca3efbb9cbf04b661e75c69590afa01830210aaca6ef2cfde363745de9e2cbb0ef88472109c344582d18cc128841cda46eecb450447606d3753938a1866d5f826c5ba40dd35cd38567e83e8f6add527c57a121ed4b799b5de58760ef4f96425d4249e032202b462a5f15adfb503a8c8cfd97cfc9d1fe522c7acfa691e502866c3cd7268ab5dfd8f58639480d23a76a741cfb7d3a15e4dc8cf2a26e105eef9529b73c0bc80208f7dea2b15a94530cb96c38ec9038fb8a0acc6dd1c8f4447def7df68a48cfd9fa656639796a42a658e28273ba99413165962551d3135c97725d5be459b50a5d8a07d4b494aea06bec97504c2314f9be8ee36c1fea116c7c018b596cebc254ee535f9373b38d4da061899e3434752cb13f997782f5646daa77713ed7c5db5c00ae19958aace7204777890789d17e6677415965e07bb98ceec78db56c2a5c53e51b7fafba8befb8cc94b50611bc3fd957deac2fa52d84fe2f9dfde6e43bc82e72c2270a95b89d186a8182bc1d4539fbcc610d3909e8e8e1db9e09fec126b4014718b0f9dcac291a38cef187f208e6363dac6596feadb3f4a24dd08777c50e67ed9c3f8e0e09de366de21f5db163c69ee342376f3bd00d27536d5cbe94bfdb7da542d1532249b3a02291c30ff92bbc7c0bd1a5625a5640bb2c3d5f169d31bf9c393fc23b5dfab40245789ecacf3ed9d885aa20870b4f46177d4d5d239b6cc1772399329dc9430083c563fedb94e4a148c098cee7116393423db2f945e4d6554afa9b2f688917a8f9554c2ad3ed2502a28fbd1420c4fad74a8834037cd6bb4f4fb07a7be165c1fa031768d5ce79914cfd77e41339eeb0028308c0a63ee79ce160c80652ca62cf11afa8f67b87c25ec438ad3243cb8bc5e9ccbceedcad3ba9b3fb292d850af0a3df2e32f3aab5ce8f1ebfcf7f029f4ff15fb4f50aff2df9b12b98dffada12e13f05fa0a517f4ff3fcabfe0cfdd7f5ec24a81d0c369b20d50d91b7d3fe7a4338db922aeff1516c157fe8df13fc3168e9eff8b8ebf0cdafd6031b41f9189521682f24fa92a6929c2e56da2ff03bd7a5087");}else{header("Content-Type: image/gif");switch($o){case"plus.gif":echo
fun_adm_lzw_decompress("78da73f774b3b04c146210626864307cf7ee1d0343c3cc9933191818147fb23032303032e800d90c20794626c596fe95a7dff2fb727c3ca3a5b92fffd77a4d058ec2a9920b533bb6be533ef2c9e7342b833500870e19b7");break;case"cross.gif":echo
fun_adm_lzw_decompress("78da73f774b3b04c146210626864307cf7ee1d0343c3cc9933191818147fb23032303032e800d90c20794626e596fe95a7dff22b73255e73cbafab3cacd7185f9e38e5a1e1f38d5eefb8dd0ff95c378b6560b00600b42219e1");break;case"up.gif":echo
fun_adm_lzw_decompress("78da73f774b3b04c146210626864307cf7ee1d0343c3cc9933191818147fb23032303032e800d90c207946268596fe95a7dff2fb7204fa71bdaf15fe322f51d4a24bb07256e2d16deb188e7f921167b00600524417c6");break;case"down.gif":echo
fun_adm_lzw_decompress("78da73f774b3b04c146210626864307cf7ee1d0343c3cc9933191818147fb23032303032e800d90c207946268596fe95a7dff2fb727c3ca3a5b92f3afc5fcca2e33e6a37e7c81edb3695e1f8271971066b007727197e");break;case"arrow.gif":echo
fun_adm_lzw_decompress("78da73f774b3b04ce460e062686060686868f8ffffbfe24f1646060646061d062000c93030f1b334654edbd83d6f8ae0aacb9beeed6660b00600a147102e");break;default:echo'default';break;}}exit();}$c=new
Cls_Adm_Adminers();$_SERVER['SQL']=array();$_SERVER['DB_LIST']=array();foreach($_GET
AS$x=>$W){if(is_string($W)&&strlen(trim($W))===0)$_GET[$x]='';}if(isset($_GET['ns']))unset($_GET['ns']);$Pc=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Pc||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$X){$oi=filter_input_array(constant("INPUT$X"),FILTER_UNSAFE_RAW);if($oi)$$X=$oi;}}$sa=isset($_GET['adminers_close'])?$_GET['adminers_close']:'';if(fun_adm_is_ajax()&&$sa){$sa!=='true'&&$sa='false';fun_adm_set_session('sidebar',strtolower($sa));exit(json_encode(array('re'=>'ok')));}$he=fun_adm_get_session('lang');if($he)$this->conf_lang=$he;if(!in_array(strtolower($this->conf_lang),array('zh','zw','ja','de','en')))$this->conf_lang=fun_adm_getdef_lang();$a=$this->conf_lang;function
fun_adm_get_translations($Td){switch($Td){case"en":$mb="78da8557c9721b37103d1b5f818baa928ac3eceb25c5c892adb22c33a2ec548ed04c939cd20c30c64289fefabc6e80c32135a91c240ebab1347a79fd7093ba7bf241bd3291b4b1b58e4d476a197d63d7415d372106f567638ddfa9d7e43a8af8b8b25bd336b53e5fde5eeae81ec8cef49278ed86f4caf94e9bb569ec4c5dbbb54b5187545514c22ab5226aacfad8d0a3ba33f72da973d77564237edbd45975b7eb49cd5374faca569e44f58a5626b551e3d44438bda6270a6ade46f2ba29a34be7a9595bfd40bba0962ef98a70805f5354ef6ff4ab8beb8bbb0bfefab07835c7972c56f3ba667bf70bd59d6fd66bf6062b621eb067ccbd09a443b5a1cea805f9ce58d8a5dbc63ea81ba72b5c01ae0bf0858631558a3453174fbdf3383cc53e4536af3371d84bddc22f8d85dd175bec14b22f240a46ddd2ca53d8c8405f935dc78d5af866dbb4b4c61cb9bf3af7c411b3f4a8ebfda60befd8cfb02b44f5d1f8266fba8c26a6a03e04f2d67070c96f71af8bba89fb6d1274eaaa138b977f5def6fa42ebc77ec63fd2911027f56eb6f34fff7eef145fe09ea2f56edef5debf76f5feaacd266b5a20ab2d98bff9c130e9378df4fa7f3662f8ab4a17024877f658014ed9a982db9848774ea5b67eaf137cef0a4eb26b03b70cea5779d0ed9097fd37dfed22b5e7016d46db2f29d77a027ae80591ed40e465817b37406c7ba5e3bab89bda4961b5cd9d97697c741bdc12407af9db764b2bbb5695b4e98288199a9ab489dde98a0ef89acaea92571c4b138f508f05e7c160e8ac6c274d148f68c36f2aeef27e486937e425e4912409e4b2ae6bacc9991077981640ff21189ab2ad7b62636ceaaa5d9d27189228f61815a181f1b9ea2ef77874118c965c38f7949296b58b5a5137345a50519324ae82f5a298b2fd50defc0d56ae929aa9a42051c0274a1883ac776ed8bf7b9739eab3cb14193aac145cf558399d97b433516070ee3a5c0c78421a78ae1ac53c5c949058fca39fb11a7584197d19690523d5198ff33735c9e23849db8c4a4763078527bb8a7c075ee3e02d9c01f0e73d05d0a316704b79680e8883f75442ebc64190a5be6dcf3f2dc0cb82279f6c956bcbba71556d80a1022dbc8d252cc97e33e90979642d818bbce4996f792ee3571c963f1e09963f170e912367405801bdae96718b5e5b65814f29d032d9fd22826b63f910fd69cc84f6a9cb6d273f35179803601f4bf60d4df32d8bfb7dc067a6012976a8f96c440f93cb7064b9e69065b9e67d9b135ab642bc1923cecb98fd5c90f3534e8cbf830e11ab14906e1b9a598bc95c4408343c74094a76aed99ea9085cf54a7f556260c15b71f33324da1ef91f8146405cd0ac6f277e11e53fb9c6a0e387eaa393da45098fd396578c7144ff24348c1c491c7e2e1bc63f170d8c284f0e87cadde98b0a17a1f6ef5da1b1c714b5b5044eeee7de127c30e0f0d838df4f8a23b6a00458d06eaac6c0022125d34ad7a0b8d088e3ae501d68aeaa89b0c40761e7dfb55d536d5034385c93d8bb95be7ea66b5c3cad2eff7c882633fdc5d7efdab46b41d779759e140a35e2cdca91c2dc0793879d0a90f56fa288e0ae8f5552c38c5280356c0cb66ea9d18816c34bedac079b9cb06454cd71000cd1f423d4726c74d13f23d381a2887d680025e83fc702fe45fccf4193cd5e3c6c108d4331a36ce69c52de8e0cc3ed47c71059e532521de99958eae123d2ad11c38c758c7fd764a5eb9be99541cd394b1c6f578853022ce8a1f325c73f833a5753d5940953091f38189649e5018b3b0e74b4f8c58e086c2ce02ecaf22e3c6bb31ecca6b243b227be80688cdf9036e52a5d4a9f7c51e35b7a6dd7de69e40d50382d39b06e5549c82d06d25b88e1bd3a1f1b31856f6bb0162321997ba0fd2e5eb84149847bd6eb6ec65ae4fcc5073846ce7121e509efe5067b31f563a8c9228d35b6430f355648e796abad431c9748fb89630da00b33592e32cfc39532fd5b7df7dffc38f3ffdfccbafbf29eafab8530e9880e75d0be7319b54ffe038098475a8c9fda3239f560b8870aa4918662a67b13040e9af95b328fc947394c59c7d8336f3d5ccd4dae8cbebb0385e12efca222a2b030ccecfc4e52e70145052f7bb482fca6fd8b340a18f6093f861b49361893e478cab464292fafc5bbb473b3c5ef7e13950bac9dc04e146370cd8ec77f810b7f72ead377af16601e210c9b2869f0d30780d9f9bc0d3d402943fc8b30a1083bf9554fab080c3018c295d0dcfcdf5dad33a27b1b1bb47e63560450887bc6ed41d56ea4c79d53c77c2cbd4b6390c607ec6aac02c1c4fb7711e8f6827fb90beee4cd31e302ba0c405afb2627c7d51fd0b02f49a7e";break;case"de":$mb="78da8d58cd721bb9113e1b4f817295aaec8a4525d9fc6cb6763745ada958116d6b45595be54b0ae4348728ce601800634a3ce73d72d133ec4937be58bec66066c0a19cda83343300bad168747ffd353fab554146bc55be2e656d32f999b417f8b758915993f7989c6ac78f736df68f56fc83aa92bcd5247e9add5cc8db6a4d0692f9fea9f03a1fc9730d2199699217952deb42d94c415c9235547ba9e66eb1d20b088dc4785e5291411693cbaac82d6f3b12d32ad746dc69da8a5b35a7a2207155952519afac986d54e149dc3e6cc4b8f6d5e9a5595be2397157d91ccbb764bd5c92f305e5b0fad2647a47ae7dcafda3c9608ab8805406538afd937354884fd66d2c4c119f35be3e7e906f27d3c9ed84df3e5dbf1de36dff9f6725e54a9b5dbddc3ff16eb756e739d9f67930f796dd3057660d592a15be6bb22bb5f45837d5662dae481bc9275526abe4970a93d8117e9adc6f2aeb35596899d89ce6463bc1de55bed72a6eaada6b139690ceb1c451ebbfb8b918af7dad0aed1a55612cb7fb5ff7ff2571438b15fc0a37d17daf141783bb0f1aae6d05ffb9828341dc29abd59c87671ea1e3c43999daef70f219d92f789c93b2738412c74d9c4a745d96fd81663f4f4fdb438b0b42385a093fc0d592a7c6f3a5553989934c9e49fe1f6c73caef5e741ffb47e81771a554b5cb093e5f59ff46a602728eb8ad964bb8f4c5ff5f1c1426cb4562491aaba9f888ed49d699af2e44e0baf0dade41b71f169b5d1cd552275e4a3c86c830c14e8d7735cf09f1c43901c5775529e305fc427317de9aa5f2c445adea70732de91e57aa396ba0a8c26187c3060780f2730cc6fb5126ec68c487daf6633b841dc6de41aeb20f62baff95231d51873bc7e1ba80e03827d986e648f417b4ad6d4632a72288fae7a69afc4da74e5c9c84dae0e31cb3517b3b63fc12a97b349ea81b0834a19a8cb7b8d17ef7c1fc419514c2b505abd926c0a73d9d18001983575128af2bd3cd9814ac2841ab496328a79bc275b35073e775d98fa47b7683b870dbe46f80b9e46421a54f19301bec94afa698cbe975d082ebea210ae0ecc3256689253d180c9d399ca9cb3919659e9bea1d3a9c195e69986abdfd1c10cd027c1ec7cac178bfdf6079b7591c6f778a9ffd36e37a696b247f8bab51c36f4297df22728431c3ba32f4f6f3f3c989bea2a0f3c4cf359ea74d95479173211a8c2cc372869552e64553f91b1bfdc3463a64d51b89882a6be720cbd50a45e94003d7ad10651d68044a9005166069c9df3b86925671b767bffec8fc50887d4ca9b6f6c6084ecb2af384635f24a3bd07d3c1ce2b3f59824912b59450d30a644f26bf30f708abfb78089f6db4b425f6688bc14462d150a433a09b38529ec43ca88f474e6624fe49f8f741a1a670feb7a5a4215111950fc3af37ee703cb16d20d09976519b35834b675a20011940bfa351ed8a0151e03589f91b0b83036b83d54edeec9f16eb0eff1c48c3bf6b84c833397d309124f540a0cfea38d1a575fcee6d611b8ef6e90713e4c75887fa784f54447677545c0ec6d3e27228d06f11c7bb6de277bf15d3f10dfbb88b8a9e4f0db71f4c24fb0f453a03ae95735b100bf14eb915656d2060b342d50073f18b86860607815c910342354afc66d3709e3848fda8b82a4295c2a436c03ea74a2fc62d67c0e818456b0d844a1996b7b9fc9dbc2ad01b30a0001cb8a2c95ddd7a07f50170d2909300469f6e2f4ebf95eb2a6bc80b84460704319eb6a3518db929fa8605265dc1dc6c8b9e282de8a8cfab22d0ac82795de42f891e487507ea58ceac0ee4e7869ada8fd7f911273672a629c0293700386b297be2cce8e9902ca1b03b0e6d8c8a82fc0e8fa9020abca7958d805ae0dba037635753db228cb9f06cf78f2bee98fa823ebebe9459b5a843d7d4d2b0d617480a6277bef2c0940574bf1ef56b40279923cef9c28682eb6aa35326d54db4012a5f65b6dabc3e5e506dbc2e1bd9e034a6ff5de3d2d1caafb3aa507ada3e065504aae0c6c0bb537ecd2156a3014aa8eafb14f443c3d97813153bb88d9916d59143879842e7b3a841c63e469bd99d46150fb1a5bab6fba7c01968830e290c4d2994c3de9fb057726367630c057ad3785613e7dc5df27e15bc4a1d9025fd54464b6d42559580a7162b0a859770c61c8c122ab856734fdf8871873bd328cd1c782e38f4efe264f4cd523af1aee208cfd20e6310fa2378ec5e97aa00843040f8988fd1f912c51c8dc6f94848f1fb3ffcf19b3ffdf92f7ffdf66f82034a7c04b469784a4cb489959b4d58e19e113b21a39a16f40d686413fa5dfe010354dab98ec420261ab6b1e504b1073918e769b0d2ec1f172b17a94bb4a6f036fe20d1725ed9ecc2de083973c9e467a91624c7a65987807d809a9261e7fcc1d38bf87491a818c30c3b9275c7641daf50e24443c1431845428f82ce89d5bc31cf4ad96ffffb4a3f789c61a3103a5c8d4fdc77f893a5f6f2faddf5e9c436be61968046708cadc301bc544558299a5f6d1adccddaa6d17358b19e7984ab9e1170dce76857f31edc0a44acce71d19909511a9a598eb75bbaf74573de71108696a2909e7f4040cfa96223ca4d7672e4240767ed0f264ebe57f0b73d6deb568838ee81118d5c46a4fc5e49f4b6cb1f5eaebcdf7c7776b6dd6e472a2b71303b42cf7596d119cc4132c38eb397300260e97f78f9af391267fdf247f4d945f8392904daf767eac706a2f1073fbc27bfaab22644719f1bb2a5c26143952a99e198d1ff00ef1e2f46";break;case"ja":$mb="78da95585b53db46147edf5fa117de5a7a492f69ded2244c32435b52483a7d74b09278c6d88cb169a74f96c4c5f8124c12db31100783c1066243cacd01033f66bd92f5c45fe8d95d499664e1a40fe0d5eed1d9733fdf919adb27f502520b9b6a51466a7e1e9e48a280b0b283e58f5849c02a8be50a5692b085b0dcc4f20e56ca7002cfa49442ed6646ad6f6069e7cee8ef436cbb85e53dac1ce0b84ce6327a5c6a5f96b154c0d2169616b1b486a51c9666806f1dcbfb585ec7f216bf873fc35507f0f00a2b9bc00a567394a392c7ca2e5c7fc0ee3ea02f5031a9007a7c43cbeda0bbe2535f2c1815a67dc19888b4c375d2ca193f586a90ca82ba72884825af2b352cd7196bf99c09fb1156976cf52f5614cafab75f85bbf786ef8ddda3ab4723776fc3ca8303965f762ecf49720d717360f93d17b9fb00571b246a35a5c729e512d3a784950c5784d2c242de43a4f1ae534e63a988e51453b5c42816b0049b32969358bac0d20a965f21f548c2721ae810993f25c91544ce41d345603fcf04037d8aa672ca2ebb516286a5f62d1a1674dad67c93f95ec961e53db5867c028ee81eeab913a4d6b6f562163d08f9c5bf2164f63b5be0d6ddde9bc13cedf355359185d70bccbd67b0db6ec63b5b5566cedc3ed292c7ea6c0a08b6d83bc7249b01198f985859a49dd4f495b9eea98d238b13acbc65940934fa70d86e31444350ae314da80fd87a9b3a67c02f7c25d0ff60692795fcd2b47f81d919febf8318e6a4f4940580fd94b2f9240bc3ab68383011880a91f05f53885a572e331576e11d9a0334ee988da83a0b4e0a2abe9b0242429b2993e4472c552160ba3663fa42f42c18d7fe213eb19d75b90a033d72186f38ef4eab8575f02ea9bf21ab3553afa28b68cf79cc22d43239cdbeb543924d503a6955adaf3bceb074d929d7b4ca29221f36d5fa21528f13e4c519a26920817a5b56107483b53721c051485f9bd5561a549185a45eac389c609d810b21649d5e9cea9ea62fc9eca6e3d471af276f37456f9cb828780c5f4f61952bcff71cbb3c5f6aac803469826bb35530b5be36474e1751fbf22d7806418292c63289571097de2a427358de60195ee545f7b377e9b5949f515f3d95eed65e28d250acaf5a09a81e50fdaf5a0b081868d57d64d446bd980189e1a702e5157956124fbbf7d0c165d90c59c87089b094e84b7d8d27bc6ef7f2e9b574a86f2da40f75a30778ebe5a4e036ea47e1259d8dc214cab665d89d2cb5a07dc02b8e2641392e416a1e7c6e1974f5440f95dc149fe4e1e518b35d63a9e66ad8d4ef8902ad2f59280c6f2cf343e4b1fab883a525da2ea57dba76960d172bc667d78c5db3ccc4a5ae4ba5b4addaf5e34c7532a186bdd39a48026eb2010803f05c176cb663af4ce81e7b58ee4e44f445456102fe4502be60e01fd12f4c07c4bf3cdef3100479fab347448f7b8df70dce7a3e45aa29a41dc9edd339a4eebd202b25688e6938231760c15da35ab942d192cb19a066a279d1eaf975c016f632cae1c709530bcae446f7cca275411507ad71d6a9c53b3b25a42600c724a1fc19b5cd24fec084b8ae58f51079e6750f27afd4761059d9edd8b5b4319193d28216a05d6cd394b82686bc49bdc4f422b56ced7166496303c6d708e1a4f0ca040785a7740ef86dc9e5d8352482a147cfbf72a3e22edab4faa56dcbada72d4497d8ccb46780b8fbbea9e7a2df89bf3976a6029cbd69375f749fc9621e800f2dc51454daf032bdb2754212c73c715ca1b06722c20368a9894e2d210cf8919d9e63542fd873271a095af5564db6cc7a06451e3ae75b365e581ea023098d788a56f718da55e8c2c48383682810840a139b8a0a4f442110121e8d0d7d79531043e3617f20f46c1059fdc385dcfbe1245d6aaac912abe0992eb064f8ba6720628364853180706818a051adac4229a749debe94bbe3843170c1157c8beb0707cb3ceb91ba1a07f3a1e1b08f4acf7e8589704414fcbea80f91d99a7694554bab68540c8ae35170b21128b7471e08fef0786c420c45ddda4423b1d03894e07e1a6bd53392caf5a36053ce6b16c4ff0ba48ef99e04c529e1b96f5a040f8921213c198589045ac1a00dae4020308b190681920d337b1f80c9fb241d0ab56dc01119ea1c3ad619c3ee2ff68ef398771c73ca3430b7958a8f7de3b1d804b5bc2e6d93741efae39c5aa25905936e95c71b00da06b9d8466386298166938e101e40b0c94d898c1fcb6cee42e95db03858fac05466cd10dab69a9e8773a8182471063ded527b5d43ce710f0696d4550b068ac11b4f05adfaf2d3839e3bb6417b52a93a5f3ba20bf91406b69fd117e8eb6fbebdf1ddf73ffc78f3276a72084505f1a105fd198e71f786c2c26424300d09f90c3c1e0d0bb1493fedffd1e70178a4713088786a190302ff3aa31d17b5e36534ea9ba621cf4fae5a8b06400946233d9f6c0c26bec9009b51595e73344515a89aaed8757cdad16a0dbd5ce2558e7f59629f72d844b12843f0d0151f14a0e1d6c1e4a8dd4cc29fed5393e7578ecf1b1a06a68c2199ba968e3257ad65d88b4bc2c8fd11355526ad2375fb5d4739e70332159c51c03c3a83a56586f520291a7652d60200186eb8be7151161c5f2028329035a87d76a6ce2c9a5096697eac1dce743fbc01674377885ac80c34140b06b9d384a9715fc81ce9461f0e7bab6cd6ccdeef6d36f84ffbde2dc8af5b10a4ff01e43c9b67";break;case"zh":$mb="78da75574b531b4710bef7afd80ba724e4e13c1cdf1cdb14aec209094e5239cab0b65525900b099cca49020b09212119245e12206140c23112600c422bc18fc9ceecee89bf909eedd13e7072d9dde9e9e9e9f7d7cb8b47ec7015f8ea1e2f6ff3d5336bf5149060bcdbd75b27c052ab66b50e7a3b635e9558ea0c58b2a2778bac74c9ba3b78a8c28b29e5dec82f038aaeed1af3997f62335632cb578e58eeb5158be359962d2211f8fbba5588f1549ea5b7c5da58d758b708666d0e6581b8437024d3e246308e35b6b50066f22d4bd7d9ce9695ccc17df569602a1455a603a129158cd31dd629827ed5e0850bb960bb2b56a101bc9d07a3d4e09524fcf4a372ffc1d083c70fc4d7afc3f7efe2171d017eaeb174451e316bfba82f5bafe3ed25a6b5dd352f1ef16c83b597f9fe8cb91f07566ab3c686b57cc917f7809f5479799ebdeea2ede6cedf7cbe6656850780353b2cd906f37259bc78a5c33a395714ba376fd417583b877e5dd0b53332dfde4605ced17b726515af587b1ff8e6acb59e87871363ea9f5243e471e56168843c0a15cbad097719e9331e8b8351a8f3d439cb678197b32c5d1536199d15f3f2b514440cb6c6893d18f97988cc01bebd673677507dabb00e7d63cae78a78a27d72878c658d0c6f16af3b19da63b955d63d66cb59e10424f1cdaa94737e42a1777d445f30141c0f4695c9f0cb08f095243a436fa5f54ec5b740df1afb71d4d43eb7b98779e15af3bbfac459d021a52f822ec9a3745a4b59a8033b5c63659222c5675d12d98a15c0e2657eb803ba96e06b97c6aea09acd26b0c539963b01de4a58ebbbd2892c51b766eb3211d0fbb61cbc2755411eab7a81792849bc748a31f393724be87322f5457c475d5194ae5ed17682d2dad904872c7249841b0b822f2f62ee5559f3021937d150b0b435b3b1cb621da06bf035c7326d596eb4902f5b8660eca940456697aefde51c5abdeea42851af3bf380e78cda11e8ad05bd151321b08d046b3d2bf2dda869f6b53d3b9d1c96d661efc0fc4319373764d6dfa092663eea0d12dc38e8b9ba5ec5aaf48bf792a42087e45d83971fcca359cc4db7aa315d89e4d40552dcba7034a0e6e3bbce47a24b5c123636f4365bca507713df5709abaab1c439669f516ab17cc6d87845b652785003cc6e871fcb898e203f86476fbda558b20b2c8582086aa1ee4890c2ddfaa05e49c26c50a04e8afd5974526cdb6ebada5ddd9fd17e1275598744ad68fe80655624227859c02bd51549cdd3e73f1f8944b8242f0b7837b15862acb60086b6cc37b7813731c0d8d8b061e51765e5b841eb45d91fb71b54193a2f553226bbe8dd9e415749dc97aac81d6937ed98cd43b31ec3665660a5ad5ec1399ab473e874ff855e92bcd02179d7e0e57745d2153e912e49b6815ed9bb9bde204bdcf437af1bd41b18eb6964ff0fc33497f4c2e5e86b8397ef321fc90b7184cb7346250e8381c87375cc03c37c3185180bacbd2dba13d62c560681aa801e2d25e080ed66edf927716c36aa4adf18483a71531717f8973a724bfd5e7432a47ca2e008c4921a151cf6544430198bc66c3f0c0443aa323e15892a4f542538a1fcfa78e0b3db8a3a311a1e0b4e3ceb97a82b8cb121daf6562b6bce76add83c5f38309b7bf6f420263151b57683b6b10955029e2f6385a3d2efcd7841bfaaf278b307ff7af74a543bb1daf38ca317ca4435a930e7acea079c1d62580a30140e089decb7321e9e5495b1403480481e13fd078b67ab0c236a481d8d0aef12c2dc1d7ea88c8547a7c6d589a80d7aad8471d076f1ccecbe4350906b815d68a8ede9ffc2c3c781272135a23c0f4cabe82d754209bf88e2fcf0973ad60fd8a5904b6f1d92cd729ce2f3cb58dc37d0909a5e6fb8a27679d0b6564f4000161621e1be6dd12b781488aa93c140485ca3fc16545ff626399ab7c4acdb0318c0019617b05f75d6b09309eff1ad3cf037319c82448ea365400e00b25b644be20cf3c033ccd91b4eba5185520af7c6e2a359a1381acc33499c467bc56107145f15a3da4032cb23326f435fffada78a515b92594313158d3f36a86068773758226e365aa2f5d3a8b45b634739bdd5c651ea07f814bef8f2ab5b5f7ff3ed77b7bf07a13b5bdc16ed5242fb1fe1298ac844587931199cc67c7e86418a8695a917981faa127d1ec4a5085d3f50d2ca790461c7d06a867628537224302dd2cbd9a40b6894c0d281507452fe47f4e4607661e2b2dc1bf93b61bcd70c6d5bd40cfec298e919f127c31b1fec612637834e165f32f0284294083a44f81b6f112ffaa3f978faf86858e98b28c67c8a97df5d7736fa2288b30af97f787098238e1d17c5144a5a51f06c3eece8e7c4675eadebed12b162d2a2ebc9489b8dc6511b0facd21ccba77018d5f8ab9cdecd1a5d4ceac525d1b5cccc2c2b9d8a5116d590a3ea7adece9a745def9661602a1422c72b91d1c0446f0ac4215ffacfcd3a39ca0c0ede79f4e8cec8c8bff4e0e0f6";break;case"zw":$mb="78da7557db571347187ffffe8a7de11c3d6de9c55eac6fd6cbd153adb4a8e7f4319255731a120f49d0f629204b02092472098da409449480124004d664837f4c7766769ff817facd65379b545f92996f66befbe5b774d9243b2b40575ed24a8d9627ddd22220c136df02c9ae38eb0db05b7937fdd6eecc01797f627796814dadd3e52c7b3ea55d1afeedaa968cffa1c7fe4d4f3aaf736e668e96f658d972d313f894949a48079a2d92d91a2bb749a6c5f77c65bc04ba5d775e95b804e720434b65b16ab49dcd175c32b8eb5552cd8193d926b96577a24aea55b8acdf0fa5a2496d3c144de9c0ded589b50cf687265d7aaf3664a3649f4cbb7387807fb45504b6daa48d32dcfa45bb7ce5c695db57f8eaced0e58bb8920f013546dedd87cea6891690720348bbc55ee7ba7ba92769bda6d523ba9903ba67daef0d37fd821d1681be5da09519f2ac63b737486197d48e9df53c3797e477d170702c93ffd1358b58852e2b608d1c6915d0cb39bb7d147485588174a963cd7097499abb7c4c5aaf80be9975cb45b81e0beb4f94aafca6cfd8292fb3e2b464af42e93467e9b2092c97a6460e8879e0946b605b2d5a99e3f6b1e38663ed2a5e76e7035b6a3869431880c2877fbd21ad035a7be96cd5d1296ca9e6e6779ded0d18086b5f6af88b3683345d5ebaf5f3a99517645258219d7db7f601c8f15b776d9a64b7e4450ddf92744ede170e1364b811198d24b5b1f8e304a6ca125dcfdae62c993ce8d9202b76b4e8d45f93890a6a2b5e9f5403161da1a8097f2f9f6a03094f47b1571c9117d9f99b5404174fc89c2401860e2dc5fa404174a70ee4a9e1aeefb28d96b4df69ccd2895dccc8b49b9f026a1a6e7943b993180df76943a5871f5e2ec3d942e50c4c5094cc4dc86ef357b8a1abef3092f24c98842491a49234905044345d3eea65eb6df0864cf14f53e5aa9b742ae3fb9290bf2aceb1c63e6089d1c5794ce275b287fd608a7b0cdcb5a2d3d821690b3c13b2d3642ead0a586ed49fc786dff5f490952b1a8358f9ef564eadacccf5536b06d453e908dbccd9669aed4c835b9e23d3db67b0415073f52cb0cd36d7c0af021e54a19472992c27cc6364e75f526741e3bbd4a08b14b58f047d0fc117eabb0f1b04368c8fc8e93feb0b48f7eca307f05156409e59a4e07516955c22dfbd5ae404bf16a5aa7effeb51a49f2ae5f550659fc5689185bc6cb67cfdc170d7b2c438c69c67ab2629e6715ca8ee25c28b9a6059f9f779358b27781f038bed40e6826dbeb2cd255c6071fb1c1473bf56bbad5bf2eba66f4f87578f71b4f8e6f923c8334fb8e27f54d95b83d44b637a28a96ba3f833160945237fe9616d3ca23f86bebbd027a72b44f6fb1e67f7905413f649c12b103c04b7942318741efb7f6a40770b807e21cd3c1fbb277955a3be5c9914bd41de29f650559083547531d3e1e3436edc89793c57aaa813b9c17e8022d55c73b6ab4e03cb7fb58aedda2b6d3fe9c464ea151b2429b13e29b887e0fd2e4b29a2876597a434575a040e0325eb4dfbde82eca3f6218340817e123c286ce545d0cf036fccf6a6421fb56f240beaee34ab5b702d9478a8873d1441e7b3080b50769d77413958b5a1b1f8889e489cd1136735ac7c7638c92798b391715e7480991d62ecab190cea6c208c1b359b706c67f764b710999f1c8b6a9f6908ede8e2ac2c55ece6587f2a36cda783703512c5da482592da3d5d8bc4b43bb7af7e715ed36323f17024f66050182430856846a2f323a43c409467d2c50c8ec56e05abb1a96e89818a7a012d56c85e0edc958ac3c7aec42dd23dea920065be5afc350201a09534d604aacd3737e221ae8ff8d746e363ba160e25434067d2bc6b6139552b30ac47f591243a588db68b43d7b5707c2435aac792622e9b06db6af5cc5fde703b3338883e3995396491de57437c2fd33df6a7d5edd0bda89ed01e86c675f4a31ed3e28f920889b0d50cf20aef8251e90b3ab3889da06f42ab892a01a37c81eabaa505e0e8072b56821835376e06dbd95ddece544424140d6210b81b1a49a546b943edce01c997f880a7d52247f588e4783590932d90ee01e90f9e47c611664800a38a032f17552dfb69ae6a93ce2f884e5369d07c86349f7b9524aee1df1aabb7904c56e64fad1a0c0c9ebbcf3617544a499828d19c088e31e134f67194f828123134d9d8247b0536d91a48fc049fc3575f7f73eedbefbeffe1fc8f80ca0bac325fe32d563a007e8fa764546271edd158641cb3fd01062a19d7528fc27c2c241f4670cbc337a83ca8a0128e33f6de62adbccad8e1d0384f40ffb01fdc44936320bf9b3c3e987f74fe2529bc501f51be2bd9419b1deef392bff767523f9338cb0114821c2085a71868859e542620335e45683df73ecae37ffe675d0fd6f938921a48b0199cd56f4eade70309cd4d17701a0c5d1ba28bef8861d0c63a3b9ce2281b95443c8c8e15f7c0f15a184ae4da1947b6b9237b48df4b112a3953dcd56952cc82dd6ed3a9027e85b24e936704ef763c74cde7705b7f92d49465f8ad68772a7035158dca0868899150cc43aaf809d393d22205fbc0d3b56b176edebc303cfc1f385984cd";break;}$bi=array();foreach(explode("\n",fun_adm_lzw_decompress($mb))as$X)$bi[]=(strpos($X,"\t")?explode("\t",$X):$X);return$bi;}$bi=fun_adm_get_translations($a);$ha='1.1.2';$_SERVER['VAR']['is_sidebar']=fun_adm_get_session('sidebar');!$_SERVER['VAR']['is_sidebar']&&$_SERVER['VAR']['is_sidebar']='true';if(isset($_POST['login_api']))fun_adm_set_session('adm_logout',null);define('ADM_API_LOGOUT',(boolean)fun_adm_get_session('adm_logout'));fun_adm_remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Pc);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);if(!$_SERVER['REQUEST_URI'])$_SERVER['REQUEST_URI']=$_SERVER['ORIG_PATH_INFO'];if(!strpos($_SERVER['REQUEST_URI'],'?')&&$_SERVER['QUERY_STRING']!='')$_SERVER['REQUEST_URI'].="?$_SERVER[QUERY_STRING]";$ba=isset($_SERVER['HTTPS'])&&strcasecmp($_SERVER['HTTPS'],'off');$bg=$dg=$fg=$cg=$ag=$eg='';$eg=trim($this->conf_urlquery,'&');if(ADM_API_LOGOUT!==true&&$this->conf_isapi){$bg=strtolower($this->conf_driver);$dg=$this->conf_dbhost;$fg=$this->conf_dbuser;$cg=$this->conf_dbpass;$ag=$this->conf_dbname;if(!fun_adm_get_session('sidebar')){$_SERVER['VAR']['is_sidebar']=$this->conf_sidebar_close?'false':'true';fun_adm_set_session('sidebar',$_SERVER['VAR']['is_sidebar']);}$Yf=$this->conf_dbmode;$Zf=$this->conf_tmpdir;define('ADM_API',time());}else
if($_POST&&$_POST['driver']&&$_POST['username']){$dg=$_POST['server'];$fg=$_POST['username'];$cg=$_POST['password'];$bg=$_POST['driver'];$Yf=$_POST['contype'];$ag='';define('ADM_API',false);}else{define('ADM_API',false);$ag='';if($_SESSION[ADM_USER_SID]){$dg=fun_adm_get_session('server');$fg=fun_adm_get_session('username');$cg=fun_adm_get_session('password');$ag=fun_adm_get_session('db');$bg=fun_adm_get_session('driver');$Yf=fun_adm_get_session('contype');}}define('ADM_DEBUG',(bool)$this->conf_debug);if($bg&&$fg){if($bg!=='mysql')define("ADM_DRIVER",'sqlite');else
define("ADM_DRIVER",'mysql');}if(ADM_ISAPI&&$_POST&&!ADM_API){fun_adm_set_session('show_msg',$this->def_lang_in('apiwarning'));$dg=$fg=$cg='';$_POST=array();}define('ADM_USER_DATA',fun_adm_DATA_parse($this->conf_tmpdir));$this->conf_driver=$bg;$this->conf_dbhost=$dg;$this->conf_dbuser=$fg;$this->conf_dbpass=$cg;$this->conf_tmpdir=ADM_USER_DATA;if($this->conf_dbname){$Uh=$this->conf_dbname;if(strpos($Uh,',')!==false){$Uh=explode(',',$Uh);foreach($Uh
AS$x=>$W)$Uh[$x]=trim($W);$_SERVER['DB_LIST']=$Uh;$ag=$Uh[0];}else$_SERVER['DB_LIST']=array($Uh);}if(!$this->conf_isapi)fun_adm_set_session('adm_logout',null);$_SERVER['STYPE']=array();$_SERVER['STYPE']['mysql']='MySQL';if(extension_loaded('sqlite3'))$_SERVER['STYPE']['sqlite']='SQLite 3';else
if(extension_loaded('sqlite')&&function_exists('sqlite_open'))$_SERVER['STYPE']['sqlite']='SQLite 2';$Yf=$Yf?strtolower($Yf):'none';define('ADM_IS_PDO',extension_loaded('PDO'));if(ADM_IS_PDO){define('ADM_IS_PDOMYSQL',extension_loaded('pdo_mysql'));define('ADM_IS_PDOSQLITE',extension_loaded('pdo_sqlite'));}else{define('ADM_IS_PDOMYSQL',false);define('ADM_IS_PDOSQLITE',false);}if(defined('ADM_DRIVER')){if(ADM_DRIVER==='mysql'){fun_adm_db_mysql($Yf);$w="sql";$ii=array();$mh=array();foreach(array(fun_adm_lang(0)=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),fun_adm_lang(1)=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),fun_adm_lang(2)=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),fun_adm_lang(3)=>array("enum"=>65535,"set"=>64),fun_adm_lang(4)=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),fun_adm_lang(5)=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$y=>$X){$ii+=$X;$mh[$y]=array_keys($X);}$qi=array("unsigned","zerofill","unsigned zerofill");$gf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$bd=array("char_length","date","from_unixtime","lower","round","sec_to_time","time_to_sec","upper");$hd=array("avg","count","count distinct","group_concat","max","min","sum");$fc=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array("(^|[^o])int|float|double|decimal"=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}else{fun_adm_db_sqlite($Yf);$w="sqlite";$ii=array("integer"=>0,"real"=>0,"numeric"=>0,"text"=>0,"blob"=>0);$mh=array_keys($ii);$qi=array();$gf=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","IN","IS NULL","NOT LIKE","NOT IN","IS NOT NULL","SQL");$bd=array("hex","length","lower","round","unixepoch","upper");$hd=array("avg","count","count distinct","group_concat","max","min","sum");$fc=array(array(),array("integer|real|numeric"=>"+/-","text"=>"||",));}if($c->operators===null)$c->operators=$gf;}if(isset($_GET['db']))$ag=fun_adm__($_GET['db']);if(!isset($_GET['db']))$ag=null;if(isset($_POST['db'])&&is_string($_POST['db']))$ag=$_POST['db'];define('ADM_DB_LOCK',$this->conf_dblock);if(ADM_DB_LOCK&&$ag!==$this->conf_dbname)$ag='';!$ag&&$ag='';define('ADM_VERSION',$ha);define('ADM_DB',$ag);define('ADM_USER_UID',$c->isUser());$Mg=$_SERVER['PHP_SELF']?basename($_SERVER['PHP_SELF']):basename($_SERVER['SCRIPT_FILENAME']);$ui=array('status','variables','sql','dump','database','processlist','privileges','user','script','refresh','ns','db','table','select','file','close','adminers_clear','adm_api');$me=array();foreach($_GET
AS$x=>$W){if(in_array($x,$ui))continue;else
if($_GET[$x])$me[$x]=$W;}$Ae='';if($eg)$Ae=$eg.'&';else{if(!ADM_USER_UID){if($me)$Ae=http_build_query($me).'&';fun_adm_set_session('query_url',$Ae);}else{$Ae=fun_adm_get_session('query_url');if($Ae)$Ae=trim($Ae,'&').'&';}$eg=$Ae;}define('ADM_URL','./'.$Mg.'?'.$Ae);define('ADM_ME',ADM_URL.(ADM_DB?'db='.urlencode(ADM_DB).'&':''));define('ADM_THIS_URL',preg_replace('/\/[^\?]*\//is','',$_SERVER['REQUEST_URI']));if(!fun_adm_is_ajax()&&strtolower($_SERVER['REQUEST_METHOD'])!=='post')fun_adm_set_session('referer',ADM_THIS_URL);$g='';if(!$_POST&&$_REQUEST['refresh']){fun_adm_set_session('DatabaseSize',false);fun_adm_set_session('token',false);}$kd=fun_adm_get_session('token');if(!$kd)fun_adm_set_session('token',rand(1,1e6));$U=fun_adm_get_token();$Wb=array();if($_POST&&!fun_adm_verify_token())$g=fun_adm_lang(6);else{if(isset($_POST['lang'])&&isset($Ud[$_POST['lang']])){fun_adm_set_session('lang',$_POST['lang']);fun_adm_redirect(fun_adm_remove_from_uri());}if(isset($_POST['logout']))$g=fun_adm_lang(7);else
if(empty($fg)===false){$g=fun_adm_connect();$Wb=new
Cls_Adm_Min_Driver($g);}}if(!is_object($Wb)||!is_object($g)||!$c->login($this->conf_dbuser,$this->conf_dbpass)){define('ADM_LOGIN_ERR',true);fun_adm_auth_error($g);fun_adm_page_header(fun_adm_lang(8),$g,null);echo'    <div id="index_show"><code style="padding: 3px 0px; overflow: hidden;"><span style="color: #000000;"><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">"Hello Adminers"</span></span><span class="apiclick">API</span></code><p style="display: none;" id="apinote">',highlight_string(sprintf($this->conf_note['auth_info'],$ha),true),'</p></div>
';fun_adm_page_footer('auth');exit();}else{define('ADM_LOGIN_ERR',false);!$bg&&$bg='';!$dg&&$dg='';!$fg&&$fg='';!$cg&&$cg='';$ue=strtoupper(md5($bg.$fg.$cg.$Yf));if($ue!==fun_adm_get_session('uid_md5')){fun_adm_set_session('driver',$this->conf_driver);fun_adm_set_session('server',$this->conf_dbhost);fun_adm_set_session('username',$this->conf_dbuser);fun_adm_set_session('password',$this->conf_dbpass);fun_adm_set_session('db',$ag);fun_adm_set_session('contype',$Yf);fun_adm_set_session('sesid',ADM_USER_SID);fun_adm_set_session('logintime',time());fun_adm_un_session('token');if($_POST&&$_POST['contype']){!$_POST['server']&&$_POST['server']='localhost';fun_adm_set_session('Longin_Info',$_POST['driver'].'~'.$_POST['server'].'~'.$_POST['contype']);}fun_adm_set_session('uid_md5',$ue);fun_adm_redirect(0);exit();}}if(isset($_POST['db'])&&isset($_POST['token'])&&is_string($_POST['db'])){unset($_POST['token']);$wi=http_build_query($_POST);$ti=ADM_URL.$wi;fun_adm_redirect($ti);exit();}if(isset($_GET['select'])){if($_GET['select']&&is_string($_GET['select']))fun_adm_set_session('sel_table',urlencode($_GET['select']));}if(isset($_GET['status']))$_GET['variables']=$_GET['status'];if(isset($_GET['import']))$_GET['sql']=$_GET['import'];$Lg=isset($_GET['script'])?$_GET['script']:'';$pg=isset($_GET['refresh'])?$_GET['refresh']:'';if(!(ADM_DB!=''?$g->select_db(ADM_DB):isset($_GET['sql'])||isset($_GET['adm_api'])||isset($_GET['dump'])||isset($_GET['database'])||isset($_GET['processlist'])||isset($_GET['privileges'])||isset($_GET['user'])||isset($_GET['variables'])||$Lg=='connect'||$Lg=='kill')){if(!fun_adm_is_ajax()){fun_adm_connect_error();exit();}}$bf="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$oc="'(?:''|[^'\\\\]|\\\\.)*'";$yd='IN|OUT|INOUT';if(isset($_GET['select'])&&($_POST['edit']||$_POST['clone'])&&!$_POST['save'])$_GET['edit']=$_GET['select'];if(isset($_GET['callf']))$_GET['call']=$_GET['callf'];if(isset($_GET['function']))$_GET['procedure']=$_GET['function'];if(isset($_GET['download'])){$b=$_GET["download"];$n=fun_adm_fields($b);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".fun_adm_friendly_url("$b-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(fun_adm_idf_escape($_GET["field"]));$J=$Wb->select($b,$N,array(fun_adm_where($_GET,$n)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET['table'])){$b=$_GET["table"];$n=fun_adm_fields($b);if(!$n)$l=fun_adm_error();$S=fun_adm_table_status1($b,true);fun_adm_page_header(($n&&fun_adm_is_view($S)?fun_adm_lang(9):fun_adm_lang(10)).": ".fun_adm_h($b),$l);$c->selectLinks($S);$kb=$S["Comment"];if($kb!="")echo"<p>".fun_adm_lang(11).": ".fun_adm_h($kb)."\n";$Hc=$Ic=array();if($n){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(12)."<td>".fun_adm_lang(13).(fun_adm_support("comment")?"<td>".fun_adm_lang(11):"")."</thead>\n";foreach($n
as$m){echo"<tr".fun_adm_odd()."><th>".fun_adm_h($m["field"]),"<td><span title='".fun_adm_h($m["collation"])."'>".fun_adm_h($m["full_type"])."</span>",($m["null"]?" <i>NULL</i>":""),($m["auto_increment"]?" <i>".fun_adm_lang(14)."</i>":""),(isset($m["default"])?" <span title='".fun_adm_lang(15)."'>[<b>".fun_adm_h($m["default"])."</b>]</span>":""),(fun_adm_support("comment")?"<td>".fun_adm_nbsp($m["comment"]):""),"\n";$Hc[]=$m["field"];$Ic[]='$Indata[\''.$m["field"].'\']';}echo"</table>\n";}if($Hc){$_POST['format']='sql';echo'<code class="tableinfoview">';$c->dumpTable($b,'DROP+CREATE',0);echo'</code><br />','<code class="tableinfoview">';$gh="<?php\n// PHP code, can be directly used\n\$Indata = array()\n";foreach($Ic
AS$x=>$X)$gh.=$X." = '';\n";$gh.="\n".'$Indata[\'SQL\'] = "INSERT INTO `'.fun_adm_h($b).'`(`'.implode('`,`',$Hc).'`) VALUES (\'{'.implode('}\', \'{',$Ic).'}\')";';$gh.="\n".'//There is any problem, you can directly print this array: $Indata';echo
highlight_string($gh,true),'</code>','<br />';}if(!fun_adm_is_view($S)){if(fun_adm_support("indexes")){echo"<h3 id='indexes'>".fun_adm_lang(16)."</h3>\n";$u=fun_adm_indexes($b);if($u){echo"<table cellspacing='0'>\n";foreach($u
as$E=>$t){ksort($t["columns"]);$Qf=array();foreach($t["columns"]as$y=>$X)$Qf[]="<i>".fun_adm_h($X)."</i>".($t["lengths"][$y]?"(".$t["lengths"][$y].")":"").($t["descs"][$y]?" DESC":"");echo"<tr title='".fun_adm_h($E)."'><th>$t[type]<td>".implode(", ",$Qf)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'indexes='.urlencode($b).'">'.fun_adm_lang(17)."</a>\n";}if(fun_adm_fk_support($S)){echo"<h3 id='foreign-keys'>".fun_adm_lang(18)."</h3>\n";$Vc=fun_adm_foreign_keys($b);if($Vc){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(19)."<td>".fun_adm_lang(20)."<td>".fun_adm_lang(21)."<td>".fun_adm_lang(22)."<td>&nbsp;</thead>\n";foreach($Vc
as$E=>$p){echo"<tr title='".fun_adm_h($E)."'>","<th><i>".implode("</i>, <i>",array_map('fun_adm_h',$p["source"]))."</i>","<td><a href='".fun_adm_h($p["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($p["db"]),ADM_ME):($p["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($p["ns"]),ADM_ME):ADM_ME))."table=".urlencode($p["table"])."'>".($p["db"]!=""?"<b>".fun_adm_h($p["db"])."</b>.":"").($p["ns"]!=""?"<b>".fun_adm_h($p["ns"])."</b>.":"").fun_adm_h($p["table"])."</a>","(<i>".implode("</i>, <i>",array_map('fun_adm_h',$p["target"]))."</i>)","<td>".fun_adm_nbsp($p["on_delete"])."\n","<td>".fun_adm_nbsp($p["on_update"])."\n",'<td><a href="'.fun_adm_h(ADM_ME.'foreign='.urlencode($b).'&name='.urlencode($E)).'">'.fun_adm_lang(23).'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'foreign='.urlencode($b).'">'.fun_adm_lang(24)."</a>\n";}}if(fun_adm_support(fun_adm_is_view($S)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".fun_adm_lang(25)."</h3>\n";$fi=fun_adm_triggers($b);if($fi){echo"<table cellspacing='0'>\n";foreach($fi
as$y=>$X)echo"<tr valign='top'><td>".fun_adm_h($X[0])."<td>".fun_adm_h($X[1])."<th>".fun_adm_h($y)."<td><a href='".fun_adm_h(ADM_ME.'trigger='.urlencode($b).'&name='.urlencode($y))."'>".fun_adm_lang(23)."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'trigger='.urlencode($b).'">'.fun_adm_lang(26)."</a>\n";}}elseif(isset($_GET['schema'])){fun_adm_page_header(fun_adm_lang(27),"",array(),fun_adm_h(ADM_DB.(isset($_GET["ns"])?".$_GET[ns]":"")));$wh=array();$xh=array();$da=($_GET['schema']?$_GET['schema']:'');$ti=fun_adm_h(ADM_ME."schema=".urlencode($da));preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$da,$C,PREG_SET_ORDER);foreach($C
as$r=>$B){$wh[$B[1]]=array($B[2],$B[3]);$xh[]="\n\t'".fun_adm_js_escape($B[1])."': [ $B[2], $B[3] ]";}$Xh=0;$Ja=-1;$Jg=array();$ng=array();$Zd=array();foreach(fun_adm_table_status('',true)as$R=>$S){if(fun_adm_is_view($S))continue;$Jg[$R]["fields"]=array();foreach(fun_adm_fields($R)as$E=>$m)$Jg[$R]["fields"][$E]=$m;}echo'
<div id="schema">
';if($Jg){echo'<p class="links">';foreach($Jg
as$E=>$R)echo'<a href="'.$ti.'&#'.fun_adm_h($E).'">'.fun_adm_h($E).'</a> ';echo'</p>';}foreach($Jg
as$E=>$R){echo'<br id="'.fun_adm_h($E).'" /><a href="'.fun_adm_h(ADM_ME).'table='.urlencode($E).'"><b>'.fun_adm_h($E)."</b></a> <a class=\"intop\" href=\"".$ti."\">TOP</a>",'<table class="table">';foreach($R['fields']as$m){$X='<span'.fun_adm_type_class($m["type"]).'>'.fun_adm_h($m["field"]).'</span>';$m['auto_increment']&&$m['auto_increment']='Primary key';echo'<tr>','<td>'.$X.'</td>','<td>'.$m['full_type'].'</td>','<td>'.$m['collation'].'</td>','<td>'.$m['auto_increment'].'</td>','</tr>';}echo"</table>\n";}echo'
</div>
<p class="links"><a href="',$ti,'" id="schema-link">',fun_adm_lang(28),'</a>
';}elseif(isset($_GET['dump'])){$b=$_GET["dump"];if($_POST&&!$l){ob_end_clean();$wb="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$y)$wb.="&$y=".urlencode($_POST[$y]);fun_adm_set_session("adminers_export",substr($wb,1));if(!isset($_POST['databases'])){$T=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Bh=ADM_DB.'_'.count($T);}else{$T=$_POST['databases'];$Bh=implode('_',array($T[0],$T[1],$T[2]));}if(!$T)fun_adm_redirect(ADM_THIS_URL,fun_adm_lang(29));$Bc=fun_adm_dump_headers($Bh,true);$Fd=preg_match('~sql~',$_POST["format"]);if($Fd){echo"-- Adminers $ha ".$_SERVER['STYPE'][ADM_DRIVER]." dump\n\n";if($w=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
".($_POST["data_style"]?"SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
":"")."
";$g->query("SET time_zone = '+00:00';");}}$nh=$_POST["db_style"];$j=array(ADM_DB);if(!ADM_DB){$j=$_POST['databases'];if(is_string($j))$j=explode("\n",rtrim(str_replace("\r","",$j),"\n"));}foreach((array)$j
as$k){$c->dumpDatabase($k);if($g->select_db($k)){if($Fd&&preg_match('~CREATE~',$nh)&&($i=$g->result("SHOW CREATE DATABASE ".fun_adm_idf_escape($k),1))){fun_adm_set_utf8mb4($i);if($nh=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".fun_adm_idf_escape($k).";\n";echo"$i;\n";}if($Fd){if($nh)echo
fun_adm_use_sql($k).";\n\n";$uf="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$yg){foreach(fun_adm_get_rows("SHOW $yg STATUS WHERE Db = ".fun_adm_q($k),null,"-- ")as$L){$i=fun_adm_remove_definer($g->result("SHOW CREATE $yg ".fun_adm_idf_escape($L["Name"]),2));fun_adm_set_utf8mb4($i);$uf.=($nh!='DROP+CREATE'?"DROP $yg IF EXISTS ".fun_adm_idf_escape($L["Name"]).";;\n":"")."$i;;\n\n";}}}if($_POST["events"]){foreach(fun_adm_get_rows("SHOW EVENTS",null,"-- ")as$L){$i=fun_adm_remove_definer($g->result("SHOW CREATE EVENT ".fun_adm_idf_escape($L["Name"]),3));fun_adm_set_utf8mb4($i);$uf.=($nh!='DROP+CREATE'?"DROP EVENT IF EXISTS ".fun_adm_idf_escape($L["Name"]).";;\n":"")."$i;;\n\n";}}if($uf)echo"DELIMITER ;;\n\n$uf"."DELIMITER ;\n\n";}if($_POST['table_style']||$_POST['data_style']){$Hi=array();foreach(fun_adm_table_status('',true)as$E=>$S){$R=(ADM_DB==""||in_array($E,(array)$_POST["tables"]));$Db=(ADM_DB==""||in_array($E,(array)$_POST["data"]));if($R||$Db){if($Bc=="tar"){$Vh=new
Cls_Adm_TmpFile();@ob_start(array($Vh,'write'),1e5);}$c->dumpTable($E,($R?$_POST["table_style"]:""),(fun_adm_is_view($S)?2:0));if(fun_adm_is_view($S))$Hi[]=$E;elseif($Db){$n=fun_adm_fields($E);$c->dumpData($E,$_POST["data_style"],"SELECT *".fun_adm_convert_fields($n,$n)." FROM ".fun_adm_table($E));}if($Fd&&$_POST["triggers"]&&$R&&($fi=fun_adm_trigger_sql($E,$_POST["table_style"])))echo"\nDELIMITER ;;\n$fi\nDELIMITER ;\n";$fi=null;if($Bc=="tar"){ob_end_flush();fun_adm_tar_file((ADM_DB!=''?'':"$k/")."$E.csv",$Vh);}elseif($Fd)echo"\n";}}foreach($Hi
as$Gi)$c->dumpTable($Gi,$_POST["table_style"],1);}}}if($Bc=="tar")echo
pack("x512");if($Fd)echo"-- ".date_default_timezone_get().':'.date('Y-m-d H:i:s')."\n";exit;}$fe=array();$Ng=fun_adm_get_session('sel_table');if(!ADM_DB)$Ng='';if($Ng)$fe['select']=$Ng;if($_GET["export"]!="")$fe['table']=$_GET["export"];fun_adm_page_header(fun_adm_lang(30).' - Success is related to memory',$l,$fe,fun_adm_h(ADM_DB));echo'
<form action="" method="post">
<table cellspacing="0">
';$Hb=array('','USE','DROP+CREATE','CREATE');$yh=array('','DROP+CREATE','CREATE');$Eb=array('','TRUNCATE+INSERT','INSERT');if($w=="sql")$Eb[]='INSERT+UPDATE';parse_str(fun_adm_get_session('adminers_export'),$L);if(!$L)$L=array("output"=>"text","format"=>"sql","db_style"=>(ADM_DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($L["events"])){$L["routines"]=$L["events"]=($_GET["dump"]=="");$L["triggers"]=$L["table_style"];}echo"<tr><th>".fun_adm_lang(31)."<td>".fun_adm_html_select("output",$c->dumpOutput(),$L["output"],0)."</td></tr>\n";echo"<tr><th>".fun_adm_lang(32)."<td>".fun_adm_html_select("format",$c->dumpFormat(),$L["format"],0)."</td></tr>\n";echo($w=="sqlite"?"":"<tr><th>".fun_adm_lang(33)."<td>".fun_adm_html_select('db_style',$Hb,$L["db_style"]).(fun_adm_support("routine")?fun_adm_checkbox("routines",1,$L["routines"],fun_adm_lang(34)):"").(fun_adm_support("event")?fun_adm_checkbox("events",1,$L["events"],fun_adm_lang(35)):"")),"<tr><th>".fun_adm_lang(36)."<td>".fun_adm_html_select('table_style',$yh,$L["table_style"]).fun_adm_checkbox("auto_increment",1,$L["auto_increment"],fun_adm_lang(14)).(fun_adm_support("trigger")?fun_adm_checkbox("triggers",1,$L["triggers"],fun_adm_lang(25)):""),"<tr><th>".fun_adm_lang(37)."<td>".fun_adm_html_select('data_style',$Eb,$L["data_style"]),'</table>
<p><input type="submit" value="',fun_adm_lang(30),'" />
<input type="submit" class="adm_refresh" value="',fun_adm_lang(38),'" />
<input type="hidden" name="token" value="',$U,'" />

<table cellspacing="0">
';$Nf=array();if(ADM_DB){$Xa=($b!=''?'':" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$Xa onclick='formCheck(this, /^tables\\[/);'>".fun_adm_lang(36)."</label>","<th style='text-align: right;'><label class='block'>".fun_adm_lang(37)."<input type='checkbox' id='check-data'$Xa onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$Hi="";$zh=fun_adm_tables_list();foreach($zh
as$E=>$V){$Mf=preg_replace('~_.*~','',$E);$Xa=($b==""||$b==(substr($b,-1)=="%"?"$Mf%":$E));$Qf="<tr><td>".fun_adm_checkbox("tables[]",$E,$Xa,$E,"checkboxClick(event, this); formUncheck('check-tables');","block");if($V!==null&&!preg_match('~table~i',$V))$Hi.="$Qf\n";else
echo"$Qf<td align='right'><label class='block'><span id='Rows-".fun_adm_h($E)."'></span>".fun_adm_checkbox("data[]",$E,$Xa,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";$Nf[$Mf]++;}echo$Hi;if($zh)echo"<script type='text/javascript'>ajaxSetHtml('".fun_adm_js_escape(ADM_ME)."script=db');</script>\n";}else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases' onclick='formCheck(this, /^databases\\[/);'>".fun_adm_lang(33)."</label></th><th>".fun_adm_lang(39)."</th><th>".fun_adm_lang(10)."</th></tr></thead>\n";$j=$c->databases();$Ah=fun_adm_count_tables($j);if($j){foreach($j
as$k){if(!fun_adm_information_schema($k)){$Lb=fun_adm_sizeformat(fun_adm_db_size($k));$Mf=preg_replace('~_.*~','',$k);$Ah[$k]+=0;echo"<tr><td>".fun_adm_checkbox("databases[]",$k,false,$k,"formUncheck('check-databases');","block")."</td><td>{$Lb}</td><td>{$Ah[$k]}</td></tr>";$Nf[$Mf]++;}}}else
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
</form>
';$Qc=true;foreach($Nf
as$y=>$X){if($y!=""&&$X>1){echo($Qc?"<p>":" ")."<a href='".fun_adm_h(ADM_ME)."dump=".urlencode("$y%")."'>".fun_adm_h($y)."</a>";$Qc=false;}}}elseif(isset($_GET['privileges'])){fun_adm_page_header(fun_adm_lang(40));echo"<p class='links'>\n";foreach(array('index'=>fun_adm_lang(41),'database'=>fun_adm_lang(42),'privileges'=>fun_adm_lang(40),'processlist'=>fun_adm_lang(43),'variables'=>fun_adm_lang(44),'status'=>fun_adm_lang(45),)as$y=>$X){if(fun_adm_support($y)){$y==='index'&&$y='';if($y==='privileges')echo"<a class=\"meun_a_focus\" href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else{if($y)echo"<a href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else
echo"<a href='".fun_adm_h(ADM_ME)."'>$X</a>\n";}}}echo'</p>';$J=$g->query("SELECT User, Host FROM mysql.".(ADM_DB==""?"user":"db WHERE ".fun_adm_q(ADM_DB)." LIKE Db")." ORDER BY Host, User");$dd=$J;if(!$J)$J=$g->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form enctype=\"application/x-www-form-urlencoded\" action=''><p>\n";fun_adm_hidden_fields_get();echo"<input type='hidden' name='db' value='".fun_adm_h(ADM_DB)."'>\n",($dd?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(46)."<th>".fun_adm_lang(47)."<th>&nbsp;</thead>\n";while($L=$J->fetch_assoc())echo'<tr'.fun_adm_odd().'><td>'.fun_adm_h($L["User"])."<td>".fun_adm_h($L["Host"]).'<td><a href="'.fun_adm_h(ADM_ME.'user='.urlencode($L["User"]).'&host='.urlencode($L["Host"])).'">'.fun_adm_lang(48)."</a>\n";if(!$dd||ADM_DB!="")echo"<tr".fun_adm_odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".fun_adm_lang(48)."'>\n";echo"</table>\n","</form>\n",'<p class="links"><a href="'.fun_adm_h(ADM_ME).'user=">'.fun_adm_lang(49)."</a>";}elseif(isset($_GET['sql'])){if(!$l&&$_POST['export']){fun_adm_dump_headers('sql');$c->dumpTable('','');$c->dumpData('','table',$_POST["query"]);exit;}$ld=fun_adm_get_session('queries','array');if(!$l&&$_POST['clear']){$ld=array();fun_adm_set_session('queries',null);fun_adm_redirect(fun_adm_remove_from_uri('history'));}$fe=array();$Ng=fun_adm_get_session('sel_table');if(!ADM_DB)$Ng='';if($Ng)$fe['select']=$Ng;fun_adm_page_header((isset($_GET["import"])?fun_adm_lang(50):fun_adm_lang(51)),$l,$fe);if(!$l&&$_POST){$Zc=false;if(!isset($_GET["import"]))$I=trim($_POST["query"]);elseif($_POST["webfile"]){$Kb='';if(file_exists('adminers.sql'))$Kb='adminers.sql';else
if(file_exists('adminers.sql.gz'))$Kb='compress.zlib://adminers.sql.gz';if($Kb)$Zc=@fopen($Kb,'rb');$I=($Zc?fread($Zc,1e9):false);}else$I=fun_adm_get_file("sql_file",true);if(is_string($I)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(fun_adm_ini_bytes("memory_limit"),2*strlen($I)+memory_get_usage()+8e6));if($I!=""&&strlen($I)<1e6){$H=$I.(preg_match("~;[ \t\r\n]*\$~",$I)?'':";");$Dh=array();if($ld[ADM_DB])$Dh=end($ld[ADM_DB]);if(!$ld[ADM_DB]||reset($Dh)!=$H){$ld[ADM_DB][]=array($H,time());fun_adm_set_session('queries',$ld);}}$fh="(?:\\s|/\\*.*\\*/|(?:#|-- )[^\n]*\n|--\r?\n)";$Pb=";";$Ue=0;$lc=true;$h=fun_adm_connect();if(is_object($h)&&ADM_DB!="")$h->select_db(ADM_DB);$jb=0;$sc=array();$ee=0;$yf='[\'"'.($w=="sql"?'`#':($w=="sqlite"?'`[':($w=="mssql"?'[':''))).']|/\\*|-- |$'.($w=="pgsql"?'|\\$[^$]*\\$':'');$Yh=microtime(true);parse_str(fun_adm_get_session('adminers_export'),$qa);$cc=$c->dumpFormat();unset($cc["sql"]);while($I!=""){if(!$Ue&&preg_match("~^$fh*DELIMITER\\s+(\\S+)~i",$I,$B)){$Pb=$B[1];$I=substr($I,strlen($B[0]));}else{preg_match('('.preg_quote($Pb)."\\s*|$yf)",$I,$B,PREG_OFFSET_CAPTURE,$Ue);list($Xc,$Lf)=$B[0];if(!$Xc&&$Zc&&!feof($Zc))$I.=fread($Zc,1e5);else{if(!$Xc&&rtrim($I)=="")break;$Ue=$Lf+strlen($Xc);if($Xc&&rtrim($Xc)!=$Pb){while(preg_match('('.($Xc=='/*'?'\\*/':($Xc=='['?']':(preg_match('~^-- |^#~',$Xc)?"\n":preg_quote($Xc)."|\\\\."))).'|$)s',$I,$B,PREG_OFFSET_CAPTURE,$Ue)){$Bg=$B[0][0];if(!$Bg&&$Zc&&!feof($Zc))$I.=fread($Zc,1e5);else{$Ue=$B[0][1]+strlen($Bg);if($Bg[0]!="\\")break;}}}else{$lc=false;$H=substr($I,0,$Lf);$jb++;$Qf="<pre id='sql-$jb'><code class='jush-$w'>".fun_adm_shorten_utf8(trim($H),1000)."</code></pre>\n";if(!$_POST["only_errors"]){echo$Qf;ob_flush();flush();}$ih=microtime(true);if($g->multi_query($H)&&is_object($h)&&preg_match("~^$fh*USE\\b~isU",$H))$h->query($H);do{$J=$g->store_result();$Kh=" <span class='time'>(".fun_adm_format_time($ih).")</span>".(strlen($H)<1000?" <a href='".fun_adm_h(ADM_ME)."sql=".urlencode(trim($H))."'>".fun_adm_lang(48)."</a>":"");if($g->error){echo($_POST["only_errors"]?$Qf:""),"<p class='error'>".fun_adm_lang(52).($g->errno?" ($g->errno)":"").": ".fun_adm_error()."\n";$sc[]=" <a href='#sql-$jb'>$jb</a>";if($_POST["error_stops"])break
2;}elseif(is_object($J)){$z=$_POST["limit"];$of=fun_adm_select($J,$h,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' enctype=\"application/x-www-form-urlencoded\" method='post'>\n";$Qe=$J->num_rows;echo"<p>".($Qe?($z&&$Qe>$z?fun_adm_lang(53,$z):"").fun_adm_lang(54,$Qe):""),$Kh;$pd="export-$jb";$Ac=", <a href='#$pd' onclick=\"return !toggle('$pd');\">".fun_adm_lang(30)."</a><span id='$pd' class='hidden'>: ".fun_adm_html_select("output",$c->dumpOutput(),$qa["output"])." ".fun_adm_html_select("format",$cc,$qa["format"])."<input type='hidden' name='query' value='".fun_adm_h($H)."'>"." <input type='submit' name='export' value='".fun_adm_lang(30)."'><input type='hidden' name='token' value='$U'></span>\n";if($h&&preg_match("~^($fh|\\()*SELECT\\b~isU",$H)&&($_c=fun_adm_explain($h,$H))){$pd="explain-$jb";echo", <a href='#$pd' onclick=\"return !toggle('$pd');\">EXPLAIN</a>$Ac","<div id='$pd' class='hidden'>\n";fun_adm_select($_c,$h,$of);echo"</div>\n";}else
echo$Ac;echo"</form>\n";}}else{if(!$_POST["only_errors"])echo"<p class='message' title='".fun_adm_h($g->info)."'>".fun_adm_lang(55,$g->affected_rows)."$Kh\n";}$ih=microtime(true);}while(false);$ee+=substr_count($H.$Xc,"\n");$I=substr($I,$Ue);$Ue=0;}}}}if($lc)echo"<p class='message'>".fun_adm_lang(29)."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".fun_adm_lang(56,$jb-count($sc))," <span class='time'>(".fun_adm_format_time($Yh).")</span>\n";}elseif($sc&&$jb>1)echo"<p class='error'>".fun_adm_lang(52).": ".implode("",$sc)."\n";}else
echo"<p class='error'>".fun_adm_upload_error($I)."\n";}echo'
<form action="" method="post" enctype="multipart/form-data" id="form">
';$yc="<input type='submit' value='".fun_adm_lang(57)."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$H=$_GET["sql"];if($_POST)$H=$_POST["query"];elseif($_GET["history"]=="all")$H=$ld[ADM_DB];elseif(isset($_GET["history"]))$H=$ld[ADM_DB][$_GET["history"]][0];echo"<p>";fun_adm_textarea("query",$H,20);echo($_POST?"":"<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"),"<p>$yc\n";$z=$_GET["limit"]?$_GET["limit"]:0;echo
fun_adm_lang(58).": <input type='number' name='limit' class='size' value='".fun_adm_h($_POST?$_POST["limit"]:$z)."'>\n";}else{echo"<fieldset><legend>".fun_adm_lang(59)."</legend><div>",(fun_adm_ini_bool("file_uploads")?"SQL,GZ(&lt; ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n<input type='submit' value='".fun_adm_lang(59)."' title='Ctrl+Enter'>":fun_adm_lang(60)),"</div></fieldset>\n","<fieldset><legend>".fun_adm_lang(61)."</legend><div>",fun_adm_lang(62,"<code>adminers.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>"),' <input type="submit" name="webfile" value="'.fun_adm_lang(63).'">';$Ba=array();if(is_file('./adminers.sql'))$Ba[]='adminers.sql '.fun_adm_lang(64).' '.fun_adm_lang(61).':'.fun_adm_sizeformat(filesize('./adminers.sql'));if(is_file('./adminers.sql.gz'))$Ba[]='adminers.sql.gz '.fun_adm_lang(64).' '.fun_adm_lang(61).':'.fun_adm_sizeformat(filesize('./adminers.sql.gz'));$gb='blue';if(!$Ba){$Ba=array('adminers.sql, adminers.sql.gz '.fun_adm_lang(65));$gb='gray';}$Ba=implode('<br />',$Ba);echo'<p style="color:'.$gb.'">'.$Ba.'</p>',"</div></fieldset>\n","<p style=\"clear: both;\">";}echo
fun_adm_checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])),fun_adm_lang(66))."\n",fun_adm_checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])),fun_adm_lang(67))."\n","<input type='hidden' name='token' value='$U'>\n";$ld=$ld[ADM_DB];if(!isset($_GET["import"])&&$ld){fun_adm_print_fieldset("history",fun_adm_lang(68).'['.count($ld).']',isset($_GET["history"]));for($X=end($ld);$X;$X=prev($ld)){$y=key($ld);list($H,$Kh,$hc)=$X;echo'<a href="'.fun_adm_h(ADM_ME."sql=&history=$y").'">'.fun_adm_lang(48)."</a>"." <span class='time' title='".@date('Y-m-d',$Kh)."'>".@date("H:i:s",$Kh)."</span>"." <code class='jush-$w'>".fun_adm_shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$H)))),80,"</code>").($hc?" <span class='time'>($hc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".fun_adm_lang(69)."'>\n","<a href='".fun_adm_h(ADM_ME."sql=&history=all")."'>".fun_adm_lang(70)."</a>\n","</div></fieldset>\n";}if($Ng){$n=fun_adm_fields($Ng);if($n){$n=array_keys($n);$Rc=fun_adm_h(implode("\n",$n));fun_adm_print_fieldset("xTable",fun_adm_lang(10).'['.$Ng.']',false);echo
ADM_DB.'.'.$Ng."(".count($n).")<br /><textarea style=\"width:240px; height:140px\">{$Rc}</textarea>","</div></fieldset>\n";$hh='';$hh.='SELECT * FROM `'.fun_adm_h($Ng).' WHERE `'.$n[0].'` = \'?\';'."\n\n";$hh.='INSERT INTO `'.fun_adm_h($Ng).'` (`'.implode('`,`',$n).'`) VALUES (\''.implode('\', \'',$n).'\');'."\n\n";$hh.='UPDATE `'.fun_adm_h($Ng).'` SET `'.$n[0].'`=\'??\' WHERE `'.$n[1].'` = \'?\';'."\n\n";$hh.='DELETE FROM `'.fun_adm_h($Ng).' WHERE `'.$n[0].'` = \'?\';'."\n\n";$hh.='EXPLAIN EXTENDED SELECT * FROM `'.fun_adm_h($Ng).' WHERE `'.$n[0].'` = \'?\';'."\n\n";$hh.='SHOW TABLE STATUS';fun_adm_print_fieldset("SQL_command",fun_adm_lang(51),false);echo
ADM_DB.'.'.$Ng."(".count($n).")<br /><textarea style=\"width:640px; height:140px\">{$hh}</textarea>","</div></fieldset>\n";}}else{fun_adm_print_fieldset("xTable",fun_adm_lang(10),false);echo'<span>'.fun_adm_lang(71).'</span>',"</div></fieldset>\n";fun_adm_print_fieldset("SQL_command",fun_adm_lang(51),false);echo'<span>'.fun_adm_lang(71).'</span>',"</div></fieldset>\n";}echo'</form>
';}elseif(isset($_GET['edit'])){$b=$_GET['edit'];$n=fun_adm_fields($b);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?fun_adm_where_check($_POST["check"][0],$n):""):fun_adm_where($_GET,$n));$ri=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($n
as$E=>$m){if(!isset($m["privileges"][$ri?"update":"insert"])||$c->fieldName($m)=="")unset($n[$E]);}if($_POST&&!$l&&!isset($_GET['select'])){$A=fun_adm_get_session('referer');if($_POST["insert"])$A=($ri?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ADM_ME."select=".urlencode($b);$u=fun_adm_indexes($b);$mi=fun_adm_unique_array($_GET["where"],$u);$gg="\nWHERE $Z";if(isset($_POST['delete']))fun_adm_queries_redirect($A,fun_adm_lang(72),$Wb->delete($b,$gg,!$mi));else{$O=array();foreach($n
as$E=>$m){$X=fun_adm_process_input($m);if($X!==false&&$X!==null)$O[fun_adm_idf_escape($E)]=$X;}if($ri){if(!$O)fun_adm_redirect($A);fun_adm_queries_redirect($A,fun_adm_lang(73),$Wb->update($b,$O,$gg,!$mi));if(fun_adm_is_ajax()){fun_adm_page_header();fun_adm_page_messages($l);exit;}}else{$J=$Wb->insert($b,$O);$Wd=($J?fun_adm_last_id():0);fun_adm_queries_redirect($A,fun_adm_lang(74,($Wd?" $Wd":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Z){$N=array();foreach($n
as$E=>$m){if(isset($m["privileges"]["select"])){$Aa=fun_adm_convert_field($m);if($_POST["clone"]&&$m["auto_increment"])$Aa="''";if($w=="sql"&&preg_match("~enum|set~",$m["type"]))$Aa="1*".fun_adm_idf_escape($E);$N[]=($Aa?"$Aa AS ":"").fun_adm_idf_escape($E);}}$L=array();if(!fun_adm_support("table"))$N=array("*");if($N){$J=$Wb->select($b,$N,array($Z),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!fun_adm_support("table")&&!$n){if(!$Z){$J=$Wb->select($b,array("*"),$Z,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($Wb->primary=>"");}if($L){foreach($L
as$y=>$X){if(!$Z)$L[$y]=null;$n[$y]=array("field"=>$y,"null"=>($y!=$Wb->primary),"auto_increment"=>($y==$Wb->primary));}}}fun_adm_edit_form($b,$n,$L,$ri);}elseif(isset($_GET['create'])){$b=$_GET["create"];$zf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$y)$zf[$y]=$y;$mg=fun_adm_referencable_primary($b);$Vc=array();foreach($mg
as$vh=>$m)$Vc[str_replace("`","``",$vh)."`".str_replace("`","``",$m["field"])]=$vh;$rf=array();$S=array();if($b!=""){$rf=fun_adm_fields($b);$S=fun_adm_table_status($b);if(!$S)$l=fun_adm_lang(71);}$L=$_POST;$L["fields"]=(array)$L["fields"];if($L["auto_increment_col"])$L["fields"][$L["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!fun_adm_process_fields($L["fields"])&&!$l){if($_POST["drop"])fun_adm_queries_redirect(substr(ADM_ME,0,-1),fun_adm_lang(75),fun_adm_drop_tables(array($b)));else{$n=array();$xa=array();$xi=false;$Tc=array();ksort($L["fields"]);$qf=reset($rf);$va=" FIRST";foreach($L["fields"]as$y=>$m){$p=$Vc[$m["type"]];$gi=($p!==null?$mg[$p]:$m);if($m["field"]!=""){if(!$m["has_default"])$m["default"]=null;if($y==$L["auto_increment_col"])$m["auto_increment"]=true;$Uf=fun_adm_process_field($m,$gi);$xa[]=array($m["orig"],$Uf,$va);if($Uf!=fun_adm_process_field($qf,$qf)){$n[]=array($m["orig"],$Uf,$va);if($m["orig"]!=""||$va)$xi=true;}if($p!==null)$Tc[fun_adm_idf_escape($m["field"])]=($b!=""&&$w!="sqlite"?"ADD":" ").fun_adm_format_foreign_key(array('table'=>$Vc[$m["type"]],'source'=>array($m["field"]),'target'=>array($gi["field"]),'on_delete'=>$m["on_delete"],));$va=" AFTER ".fun_adm_idf_escape($m["field"]);}elseif($m["orig"]!=""){$xi=true;$n[]=array($m["orig"]);}if($m["orig"]!=""){$qf=next($rf);if(!$qf)$va="";}}$Af="";if($zf[$L["partition_by"]]){$Bf=array();if($L["partition_by"]=='RANGE'||$L["partition_by"]=='LIST'){foreach(array_filter($L["partition_names"])as$y=>$X){$Y=$L["partition_values"][$y];$Bf[]="\n  PARTITION ".fun_adm_idf_escape($X)." VALUES ".($L["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$Af.="\nPARTITION BY $L[partition_by]($L[partition])".($Bf?" (".implode(",",$Bf)."\n)":($L["partitions"]?" PARTITIONS ".(+$L["partitions"]):""));}elseif(fun_adm_support("partitioning")&&preg_match("~partitioned~",$S["Create_options"]))$Af.="\nREMOVE PARTITIONING";$D=fun_adm_lang(76);if($b==""){fun_adm_set_session('adminers_engine',$L["Engine"]);$D=fun_adm_lang(77);}$E=trim($L["name"]);fun_adm_queries_redirect(ADM_ME.(fun_adm_support("table")?"table=":"select=").urlencode($E),$D,fun_adm_alter_table($b,$E,($w=="sqlite"&&($xi||$Tc)?$xa:$n),$Tc,($L["Comment"]!=$S["Comment"]?$L["Comment"]:null),($L["Engine"]&&$L["Engine"]!=$S["Engine"]?$L["Engine"]:""),($L["Collation"]&&$L["Collation"]!=$S["Collation"]?$L["Collation"]:""),($L["Auto_increment"]!=""?fun_adm_number($L["Auto_increment"]):""),$Af));}}fun_adm_page_header(($b!=""?fun_adm_lang(78):fun_adm_lang(79)),$l,array("table"=>$b),fun_adm_h($b));$c->selectLinks($S);if(!$_POST){$L=array("Engine"=>fun_adm_get_session('adminers_engine'),"fields"=>array(array("field"=>"","type"=>(isset($ii["int"])?"int":(isset($ii["integer"])?"integer":"")))),"partition_names"=>array(""),);if($b!=""){$L=$S;$L["name"]=$b;$L["fields"]=array();if(!$_GET["auto_increment"])$L["Auto_increment"]="";foreach($rf
as$m){$m["has_default"]=isset($m["default"]);$L["fields"][]=$m;}if(fun_adm_support("partitioning")){$ad="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".fun_adm_q(ADM_DB)." AND TABLE_NAME = ".fun_adm_q($b);$J=$g->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $ad ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($L["partition_by"],$L["partitions"],$L["partition"])=$J->fetch_row();$Bf=fun_adm_get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $ad AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$Bf[""]="";$L["partition_names"]=array_keys($Bf);$L["partition_values"]=array_values($Bf);}}}$S=fun_adm_table_status1($b);$fb=fun_adm_collations();$nc=fun_adm_engines();foreach($nc
as$mc){if(!strcasecmp($mc,$L["Engine"])){$L["Engine"]=$mc;break;}}echo'<form action="" enctype="application/x-www-form-urlencoded" method="post" id="form">
<p>
';if(fun_adm_support("columns")||$b==""){echo
fun_adm_lang(80),': <input name="name" maxlength="64" value="',fun_adm_h($L["name"]),'" autocapitalize="off">
';if($b==""&&!$_POST){?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php }echo($nc?"<select name='Engine' onchange='helpClose();'".fun_adm_on_help("getTarget(event).value",1).">".fun_adm_optionlist(array(""=>"(".fun_adm_lang(81).")")+$nc,$L["Engine"])."</select>":""),' ',($fb&&!preg_match("~sqlite|mssql~",$w)?fun_adm_html_select("Collation",array(""=>"(".fun_adm_lang(82).")")+$fb,$L["Collation"]):""),' <input type="submit" value="',fun_adm_lang(83),'" />

';}echo'
';if(fun_adm_support("columns")){echo'<table cellspacing="0" id="edit-fields" class="nowrap">
';$lb=($_POST?$_POST["comments"]:$L["Comment"]!="");if(!$_POST&&!$lb){foreach($L["fields"]as$m){if($m["comment"]!=""){$lb=true;break;}}}fun_adm_edit_fields($L["fields"],$fb,"TABLE",$Vc,$lb);echo'</table>
<p>
',fun_adm_lang(14),': <input type="number" name="Auto_increment" size="6" value="',fun_adm_h($L["Auto_increment"]),'">
',fun_adm_checkbox("defaults",1,true,fun_adm_lang(84),"columnShow(this.checked, 5)","jsonly");if(!$_POST["defaults"]){echo'<script type="text/javascript">editingHideDefaults()</script>';}echo(fun_adm_support("comment")?"<label><input type='checkbox' name='comments' value='1' class='jsonly' onclick=\"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();\"".($lb?" checked":"").">".fun_adm_lang(11)."</label>".' <input name="Comment" id="Comment" value="'.fun_adm_h($L["Comment"]).'" maxlength="'.($g->server_info>=5.5?2048:60).'"'.($lb?'':' class="hidden"').'>':''),'<p>
<input type="submit" value="',fun_adm_lang(83),'" />
 <input type="submit" class="adm_refresh" value="',fun_adm_lang(38),'" />
';}echo'
';if($b!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(85),'"',fun_adm_confirm(),'>';}if(fun_adm_support("partitioning")){$_f=preg_match('~RANGE|LIST~',$L["partition_by"]);fun_adm_print_fieldset("partition",fun_adm_lang(86),$L["partition_by"]);echo'<p>
',"<select name='partition_by' onchange='partitionByChange(this);'".fun_adm_on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).">".fun_adm_optionlist(array(""=>"")+$zf,$L["partition_by"])."</select>",'(<input name="partition" value="',fun_adm_h($L["partition"]),'">)
',fun_adm_lang(87),': <input type="number" name="partitions" class="size',($_f||!$L["partition_by"]?" hidden":""),'" value="',fun_adm_h($L["partitions"]),'">
<table cellspacing="0" id="partition-table"',($_f?"":" class='hidden'"),'>
<thead><tr><th>',fun_adm_lang(88),'<th>',fun_adm_lang(89),'</thead>
';foreach($L["partition_names"]as$y=>$X){echo'<tr>','<td><input name="partition_names[]" value="'.fun_adm_h($X).'"'.($y==count($L["partition_names"])-1?' onchange="partitionNameChange(this);"':'').' autocapitalize="off">','<td><input name="partition_values[]" value="'.fun_adm_h($L["partition_values"][$y]).'">';}echo'</table>
</div></fieldset>
';}echo'<input type="hidden" name="token" value="',$U,'">
</form>
';}elseif(isset($_GET['indexes'])){$b=$_GET["indexes"];$td=array("PRIMARY","UNIQUE","INDEX");$S=fun_adm_table_status($b,true);if(preg_match('~MyISAM|M?aria'.($g->server_info>=5.6?'|InnoDB':'').'~i',$S["Engine"]))$td[]="FULLTEXT";$u=fun_adm_indexes($b);$Of=array();if($w=="mongo"){$Of=$u["_id_"];unset($td[0]);unset($u["_id_"]);}$L=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["drop_col"]){$d=array();foreach($L["indexes"]as$t){$E=$t["name"];if(in_array($t["type"],$td)){$f=array();$de=array();$Rb=array();$O=array();ksort($t["columns"]);foreach($t["columns"]as$y=>$e){if($e!=""){$ce=$t["lengths"][$y];$Qb=$t["descs"][$y];$O[]=fun_adm_idf_escape($e).($ce?"(".(+$ce).")":"").($Qb?" DESC":"");$f[]=$e;$de[]=($ce?$ce:null);$Rb[]=$Qb;}}if($f){$zc=$u[$E];if($zc){ksort($zc["columns"]);ksort($zc["lengths"]);ksort($zc["descs"]);if($t["type"]==$zc["type"]&&array_values($zc["columns"])===$f&&(!$zc["lengths"]||array_values($zc["lengths"])===$de)&&array_values($zc["descs"])===$Rb){unset($u[$E]);continue;}}$d[]=array($t["type"],$E,$O);}}}foreach($u
as$E=>$zc)$d[]=array($zc["type"],$E,"DROP");if(!$d)fun_adm_redirect(ADM_ME."table=".urlencode($b));fun_adm_queries_redirect(ADM_ME."table=".urlencode($b),fun_adm_lang(90),fun_adm_alter_indexes($b,$d));}fun_adm_page_header(fun_adm_lang(16),$l,array("table"=>$b),fun_adm_h($b));$n=array_keys(fun_adm_fields($b));if($_POST["add"]){foreach($L["indexes"]as$y=>$t){if($t["columns"][count($t["columns"])]!="")$L["indexes"][$y]["columns"][]="";}$t=end($L["indexes"]);if($t["type"]||array_filter($t["columns"],'strlen'))$L["indexes"][]=array("columns"=>array(1=>""));}if(!$L){foreach($u
as$y=>$t){$u[$y]["name"]=$y;$u[$y]["columns"][]="";}$u[]=array("columns"=>array(1=>""));$L["indexes"]=$u;}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<table cellspacing="0" class="nowrap">
<thead><tr>
<th>',fun_adm_lang(91),'<th><input type="submit" style="left: -1000px; position: absolute;">',fun_adm_lang(92),'<th>',fun_adm_lang(93);?>
<th><noscript><input type='image' class='icon' name='add[0]' src='".fun_adm_incl('plus.gif')."' alt='+' title='<?php echo
fun_adm_lang(94),'\'></noscript>&nbsp;
</thead>
';if($Of){echo"<tr><td>PRIMARY<td>";foreach($Of["columns"]as$y=>$e){echo
fun_adm_sel_input(" disabled",$n,$e),"<label><input disabled type='checkbox'>".fun_adm_lang(95)."</label> ";}echo"<td><td>\n";}$v=1;foreach($L["indexes"]as$t){if(!$_POST["drop_col"]||$v!=key($_POST["drop_col"])){echo"<tr><td>".fun_adm_html_select("indexes[$v][type]",array(-1=>"")+$td,$t["type"],($v==count($L["indexes"])?"indexesAddRow(this);":1)),"<td>";ksort($t["columns"]);$r=1;foreach($t["columns"]as$y=>$e){echo"<span>".fun_adm_sel_input(" name='indexes[$v][columns][$r]' onchange=\"".($r==count($t["columns"])?"indexesAddColumn":"indexesChangeColumn")."(this, '".fun_adm_js_escape($w=="sql"?"":$_GET["indexes"]."_")."');\"",($n?array_combine($n,$n):$n),$e),($w=="sql"||$w=="mssql"?"<input type='number' name='indexes[$v][lengths][$r]' class='size' value='".fun_adm_h($t["lengths"][$y])."'>":""),($w!="sql"?fun_adm_checkbox("indexes[$v][descs][$r]",1,$t["descs"][$y],fun_adm_lang(95)):"")," </span>";$r++;}echo"<td><input name='indexes[$v][name]' value='".fun_adm_h($t["name"])."' autocapitalize='off'>\n","<td><input type='image' class='icon' name='drop_col[$v]' src='".fun_adm_incl('cross.gif')."' alt='x' title='".fun_adm_lang(96)."' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n";}$v++;}echo'</table>
<p>
<input type="submit" value="',fun_adm_lang(83),'">
<input type="hidden" name="token" value="',$U,'">
</form>
';}elseif(isset($_GET['database'])){$L=$_POST;if($_POST&&!$l&&!isset($_POST["add_x"])){$E=trim($L['name']);if($_POST["drop"]){$_GET["db"]="";fun_adm_set_session('db',null);fun_adm_queries_redirect(fun_adm_remove_from_uri("db|database"),fun_adm_lang(97),fun_adm_drop_databases(array(ADM_DB)));}elseif(ADM_DB!==$E){if(ADM_DB!=""){$_GET["db"]=$E;fun_adm_set_session('db',null);fun_adm_queries_redirect(preg_replace('~\bdb=[^&]*&~','',ADM_ME)."db=".urlencode($E),fun_adm_lang(98),fun_adm_rename_database($E,$L["collation"]));}else{$j=explode("\n",str_replace("\r","",$E));$oh=true;$Vd="";foreach($j
as$k){if(count($j)==1||$k){if(!fun_adm_create_database($k,$L['collation']))$oh=false;$Vd=$k;}}fun_adm_queries_redirect(ADM_ME."db=".urlencode($Vd),fun_adm_lang(99),$oh);}}else{if(!$L["collation"])fun_adm_redirect(substr(ADM_ME,0,-1));fun_adm_query_redirect("ALTER DATABASE ".fun_adm_idf_escape($E).(preg_match('~^[a-z0-9_]+$~i',$L["collation"])?" COLLATE $L[collation]":""),substr(ADM_ME,0,-1),fun_adm_lang(100));}}fun_adm_page_header(ADM_DB!=""?fun_adm_lang(101):fun_adm_lang(102),$l,array(),fun_adm_h(ADM_DB));echo"<p class='links'>\n";foreach(array('index'=>fun_adm_lang(41),'database'=>fun_adm_lang(42),'privileges'=>fun_adm_lang(40),'processlist'=>fun_adm_lang(43),'variables'=>fun_adm_lang(44),'status'=>fun_adm_lang(45),)as$y=>$X){if(fun_adm_support($y)){$y==='index'&&$y='';if($y==='database')echo"<a class=\"meun_a_focus\" href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else{if($y)echo"<a href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else
echo"<a href='".fun_adm_h(ADM_ME)."'>$X</a>\n";}}}echo'</p>';$fb=fun_adm_collations();$E=ADM_DB;if($_POST)$E=$L["name"];elseif(ADM_DB!="")$L["collation"]=fun_adm_db_collation(ADM_DB,$fb);elseif($w=="sql"){foreach(fun_adm_get_vals("SHOW GRANTS")as$dd){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$dd,$B)&&$B[1]){$E=stripcslashes(fun_adm_idf_unescape("`$B[2]`"));break;}}}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p>
',($_POST["add_x"]||strpos($E,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.fun_adm_h($E).'</textarea><br>':'<input name="name" id="name" value="'.fun_adm_h($E).'" maxlength="64" autocapitalize="off">')."\n".($fb?fun_adm_html_select("collation",array(""=>"(".fun_adm_lang(82).")")+$fb,$L["collation"]).fun_adm_doc_link(array('sql'=>"charset-charsets.html",'mssql'=>"ms187963.aspx",)):"");?>
<script type='text/javascript'>focus(document.getElementById('name'));</script>
<input type="submit" value="<?php echo
fun_adm_lang(83),'" />
';if(ADM_DB)echo"<input type='submit' name='drop' value='".fun_adm_lang(85)."'".fun_adm_confirm().">\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".fun_adm_incl('plus.gif')."' alt='+' title='".fun_adm_lang(94)."'>\n";echo'<input type="hidden" name="token" value="',$U,'" />
</form>
';}elseif(isset($_GET['scheme'])){$L=$_POST;if($_POST&&!$l){$_=preg_replace('~ns=[^&]*&~','',ADM_ME)."ns=";if($_POST["drop"])fun_adm_query_redirect("DROP SCHEMA ".fun_adm_idf_escape($_GET['ns']),$_,fun_adm_lang(103));else{$E=trim($L["name"]);$_.=urlencode($E);if(isset($_GET['ns']))fun_adm_query_redirect("CREATE SCHEMA ".fun_adm_idf_escape($E),$_,fun_adm_lang(104));elseif($_GET['ns']!=$E)fun_adm_query_redirect("ALTER SCHEMA ".fun_adm_idf_escape($_GET["ns"])." RENAME TO ".fun_adm_idf_escape($E),$_,fun_adm_lang(105));else
fun_adm_redirect($_);}}fun_adm_page_header(!isset($_GET['ns'])?fun_adm_lang(106):fun_adm_lang(107),$l);if(!$L)$L['name']=$_GET['ns'];echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p><input name="name" id="name" value="',fun_adm_h($L["name"]);?>" autocapitalize="off">
<script type='text/javascript'>focus(document.getElementById('name'));</script>
<input type="submit" value="<?php echo
fun_adm_lang(83),'">
';if($_GET['ns']!='')echo"<input type='submit' name='drop' value='".fun_adm_lang(85)."'".fun_adm_confirm().">\n";echo'<input type="hidden" name="token" value="',$U,'">
</form>
';}elseif(isset($_GET['call'])){$ca=$_GET["call"];fun_adm_page_header(fun_adm_lang(108).": ".fun_adm_h($ca),$l);$yg=fun_adm_routine($ca,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$sd=array();$uf=array();foreach($yg["fields"]as$r=>$m){if(substr($m["inout"],-3)=="OUT")$uf[$r]="@".fun_adm_idf_escape($m["field"])." AS ".fun_adm_idf_escape($m["field"]);if(!$m["inout"]||substr($m["inout"],0,2)=="IN")$sd[]=$r;}if(!$l&&$_POST){$Ta=array();foreach($yg["fields"]as$y=>$m){if(in_array($y,$sd)){$X=fun_adm_process_input($m);if($X===false)$X="''";if(isset($uf[$y]))$g->query("SET @".fun_adm_idf_escape($m["field"])." = $X");}$Ta[]=(isset($uf[$y])?"@".fun_adm_idf_escape($m["field"]):$X);}$I=(isset($_GET["callf"])?"SELECT":"CALL")." ".fun_adm_idf_escape($ca)."(".implode(", ",$Ta).")";echo"<p><code class='jush-$w'>".fun_adm_h($I)."</code> <a href='".fun_adm_h(ADM_ME)."sql=".urlencode($I)."'>".fun_adm_lang(48)."</a>\n";if(!$g->multi_query($I))echo"<p class='error'>".fun_adm_error()."\n";else{$h=fun_adm_connect();if(is_object($h))$h->select_db(ADM_DB);do{$J=$g->store_result();if(is_object($J))select($J,$h);else
echo"<p class='message'>".fun_adm_lang(109,$g->affected_rows)."\n";}while($g->next_result());if($uf)select($g->query("SELECT ".implode(", ",$uf)));}}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
';if($sd){echo"<table cellspacing='0'>\n";foreach($sd
as$y){$m=$yg["fields"][$y];$E=$m["field"];echo"<tr><th>".$c->fieldName($m);$Y=$_POST["fields"][$E];if($Y!=""){if($m["type"]=="enum")$Y=+$Y;if($m["type"]=="set")$Y=array_sum($Y);}fun_adm_input($m,$Y,(string)$_POST["function"][$E]);echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="',fun_adm_lang(108),'" />
<input type="hidden" name="token" value="',$U,'" />
</form>
';}elseif(isset($_GET['foreign'])){$b=$_GET["foreign"];$E=$_GET["name"];$L=$_POST;if($_POST&&!$l&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$D=($_POST["drop"]?fun_adm_lang(110):($E!=""?fun_adm_lang(111):fun_adm_lang(112)));$A=ADM_ME."table=".urlencode($b);$L["source"]=array_filter($L["source"],'strlen');ksort($L["source"]);$Ch=array();foreach($L["source"]as$y=>$X)$Ch[$y]=$L["target"][$y];$L["target"]=$Ch;if($w=="sqlite")fun_adm_queries_redirect($A,$D,recreate_table($b,$b,array(),array(),array(" $E"=>($_POST["drop"]?"":" ".fun_adm_format_foreign_key($L)))));else{$d="ALTER TABLE ".fun_adm_table($b);$Xb="\nDROP ".($w=="sql"?"FOREIGN KEY ":"CONSTRAINT ").fun_adm_idf_escape($E);if($_POST["drop"])fun_adm_query_redirect($d.$Xb,$A,$D);else{fun_adm_query_redirect($d.($E!=""?"$Xb,":"")."\nADD".fun_adm_format_foreign_key($L),$A,$D);$l=fun_adm_lang(113)."<br>$l";}}}fun_adm_page_header(fun_adm_lang(114),$l,array("table"=>$b),fun_adm_h($b));if($_POST){ksort($L["source"]);if($_POST["add"])$L["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$L["target"]=array();}elseif($E!=""){$Vc=fun_adm_foreign_keys($b);$L=$Vc[$E];$L["source"][]="";}else{$L["table"]=$b;$L["source"]=array("");}$eh=array_keys(fun_adm_fields($b));$Ch=($b===$L["table"]?$eh:array_keys(fun_adm_fields($L["table"])));$lg=array_keys(array_filter(fun_adm_table_status('',true),'fun_adm_fk_support'));echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p>
';if($L["db"]==""&&$L["ns"]==""){echo
fun_adm_lang(115),':
',fun_adm_html_select("table",$lg,$L["table"],"this.form['change-js'].value = '1'; this.form.submit();"),'<input type="hidden" name="change-js" value="">
<noscript><p><input type="submit" name="change" value="',fun_adm_lang(116),'"></noscript>
<table cellspacing="0">
<thead><tr><th>',fun_adm_lang(19),'<th>',fun_adm_lang(20),'</thead>
';$v=0;foreach($L["source"]as$y=>$X){echo"<tr>","<td>".fun_adm_html_select("source[".(+$y)."]",array(-1=>"")+$eh,$X,($v==count($L["source"])-1?"foreignAddRow(this);":1)),"<td>".fun_adm_html_select("target[".(+$y)."]",$Ch,$L["target"][$y]);$v++;}echo'</table>
<p>
',fun_adm_lang(21),': ',fun_adm_html_select("on_delete",array(-1=>"")+explode("|",$bf),$L["on_delete"]),' ',fun_adm_lang(22),': ',fun_adm_html_select("on_update",array(-1=>"")+explode("|",$bf),$L["on_update"]),fun_adm_doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"ms174979.aspx",'oracle'=>"clauses002.htm#sthref2903",)),'<p>
<input type="submit" value="',fun_adm_lang(83),'">
<noscript><p><input type="submit" name="add" value="',fun_adm_lang(117),'"></noscript>
';}if($E!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(85),'"',fun_adm_confirm(),'>';}echo'<input type="hidden" name="token" value="',$U,'">
</form>
';}elseif(isset($_GET['view'])){$b=$_GET["view"];$L=$_POST;$oe=$_GET['materialized'];if($_POST&&!$l){$E=trim($L["name"]);$Aa=" AS\n$L[select]";$A=ADM_ME."table=".urlencode($E);$D=fun_adm_lang(118);if($oe)$V="MATERIALIZED VIEW";else{$V="VIEW";if($w=="pgsql"){$P=fun_adm_table_status($E);$V=($P?strtoupper($P["Engine"]):$V);}}if(!$_POST["drop"]&&$b==$E&&$w!="sqlite"&&$V!="MATERIALIZED VIEW")fun_adm_query_redirect(($w=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".fun_adm_table($E).$Aa,$A,$D);else{$Eh=$E."_adminers_".uniqid();fun_adm_drop_create("DROP $V ".fun_adm_table($b),"CREATE $V ".fun_adm_table($E).$Aa,"DROP $V ".fun_adm_table($E),"CREATE $V ".fun_adm_table($Eh).$Aa,"DROP $V ".fun_adm_table($Eh),($_POST["drop"]?substr(ADM_ME,0,-1):$A),fun_adm_lang(119),$D,fun_adm_lang(120),$b,$E);}}if(!$_POST&&$b!=""){$L=fun_adm_view($b);$L["name"]=$b;if(!$l)$l=fun_adm_error();}$Sh=($oe?fun_adm_lang(121):fun_adm_lang(122));fun_adm_page_header(($b!=""?fun_adm_lang(123):$Sh),$l,array("table"=>$b),fun_adm_h($b));echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p>',fun_adm_lang(93),': <input name="name" value="',fun_adm_h($L["name"]),'" maxlength="64" autocapitalize="off" />
<p>';fun_adm_textarea("select",$L["select"]);echo'<p>
<input type="submit" value="',fun_adm_lang(83),'" />
';if($_GET["view"]!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(85),'"',fun_adm_confirm(),' />';}echo'<input type="hidden" name="token" value="',$U,'" />
</form>
';}elseif(isset($_GET['event'])){$aa=$_GET["event"];$Ad=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$jh=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$L=$_POST;if($_POST&&!$l){if($_POST["drop"])fun_adm_query_redirect("DROP EVENT ".fun_adm_idf_escape($aa),substr(ADM_ME,0,-1),fun_adm_lang(124));elseif(in_array($L["INTERVAL_FIELD"],$Ad)&&isset($jh[$L["STATUS"]])){$Ig="\nON SCHEDULE ".($L["INTERVAL_VALUE"]?"EVERY ".fun_adm_q($L["INTERVAL_VALUE"])." $L[INTERVAL_FIELD]".($L["STARTS"]?" STARTS ".fun_adm_q($L["STARTS"]):"").($L["ENDS"]?" ENDS ".fun_adm_q($L["ENDS"]):""):"AT ".fun_adm_q($L["STARTS"]))." ON COMPLETION".($L["ON_COMPLETION"]?"":" NOT")." PRESERVE";fun_adm_queries_redirect(substr(ADM_ME,0,-1),($aa!=""?fun_adm_lang(125):fun_adm_lang(126)),fun_adm_queries(($aa!=""?"ALTER EVENT ".fun_adm_idf_escape($aa).$Ig.($aa!=$L["EVENT_NAME"]?"\nRENAME TO ".fun_adm_idf_escape($L["EVENT_NAME"]):""):"CREATE EVENT ".fun_adm_idf_escape($L["EVENT_NAME"]).$Ig)."\n".$jh[$L["STATUS"]]." COMMENT ".fun_adm_q($L["EVENT_COMMENT"]).rtrim(" DO\n$L[EVENT_DEFINITION]",";").";"));}}fun_adm_page_header(($aa!=""?fun_adm_lang(127).": ".fun_adm_h($aa):fun_adm_lang(128)),$l);if(!$L&&$aa!=""){$M=fun_adm_get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".fun_adm_q(ADM_DB)." AND EVENT_NAME = ".fun_adm_q($aa));$L=reset($M);}echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<table cellspacing="0">
<tr><th>',fun_adm_lang(93),'<td><input name="EVENT_NAME" value="',fun_adm_h($L["EVENT_NAME"]),'" maxlength="64" autocapitalize="off" />
<tr><th title="datetime">',fun_adm_lang(129),'<td><input name="STARTS" value="',fun_adm_h("{$L['EXECUTE_AT']}{$L['STARTS']}"),'" />
<tr><th title="datetime">',fun_adm_lang(130),'<td><input name="ENDS" value="',fun_adm_h($L["ENDS"]),'" />
<tr><th>',fun_adm_lang(131),'<td><input type="number" name="INTERVAL_VALUE" value="',fun_adm_h($L["INTERVAL_VALUE"]),'" class="size" /> ',fun_adm_html_select("INTERVAL_FIELD",$Ad,$L["INTERVAL_FIELD"]),'<tr><th>',fun_adm_lang(45),'<td>',fun_adm_html_select("STATUS",$jh,$L["STATUS"]),'<tr><th>',fun_adm_lang(11),'<td><input name="EVENT_COMMENT" value="',fun_adm_h($L["EVENT_COMMENT"]),'" maxlength="64" />
<tr><th>&nbsp;<td>',fun_adm_checkbox("ON_COMPLETION","PRESERVE",$L["ON_COMPLETION"]=="PRESERVE",fun_adm_lang(132)),'</table>
<p>';fun_adm_textarea("EVENT_DEFINITION",$L["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="',fun_adm_lang(83),'" />
';if($aa!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(85),'"',fun_adm_confirm(),'>';}echo'<input type="hidden" name="token" value="',$U,'" />
</form>
';}elseif(isset($_GET['procedure'])){$ca=$_GET["procedure"];$yg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$L=$_POST;$L["fields"]=(array)$L["fields"];if($_POST&&!fun_adm_process_fields($L["fields"])&&!$l){$Eh="$L[name]_adminers_".uniqid();fun_adm_drop_create("DROP $yg ".fun_adm_idf_escape($ca),fun_adm_create_routine($yg,$L),"DROP $yg ".fun_adm_idf_escape($L["name"]),fun_adm_create_routine($yg,array("name"=>$Eh)+$L),"DROP $yg ".fun_adm_idf_escape($Eh),substr(ADM_ME,0,-1),fun_adm_lang(133),fun_adm_lang(134),fun_adm_lang(135),$ca,$L["name"]);}fun_adm_page_header(($ca!=""?(isset($_GET["function"])?fun_adm_lang(136):fun_adm_lang(137)).": ".fun_adm_h($ca):(isset($_GET["function"])?fun_adm_lang(138):fun_adm_lang(139))),$l);if(!$_POST&&$ca!=""){$L=fun_adm_routine($ca,$yg);$L["name"]=$ca;}$fb=fun_adm_get_vals("SHOW CHARACTER SET");sort($fb);$zg=fun_adm_routine_languages();echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post" id="form">
<p>',fun_adm_lang(93),': <input name="name" value="',fun_adm_h($L["name"]),'" maxlength="64" autocapitalize="off">
',($zg?fun_adm_lang(140).": ".fun_adm_html_select("language",$zg,$L["language"]):""),'<input type="submit" value="',fun_adm_lang(83),'">
<table cellspacing="0" class="nowrap">
';fun_adm_edit_fields($L["fields"],$fb,$yg);if(isset($_GET["function"])){echo"<tr><td>".fun_adm_lang(141);fun_adm_edit_type("returns",$L["returns"],$fb);}echo'</table>
<p>';fun_adm_textarea("definition",$L["definition"]);echo'<p>
<input type="submit" value="',fun_adm_lang(83),'">
';if($ca!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(85),'"',fun_adm_confirm(),'>';}echo'<input type="hidden" name="token" value="',$U,'">
</form>
';}elseif(isset($_GET['sequence'])){$ea=$_GET["sequence"];$L=$_POST;if($_POST&&!$l){$_=substr(ADM_ME,0,-1);$E=trim($L["name"]);if($_POST["drop"])fun_adm_query_redirect("DROP SEQUENCE ".fun_adm_idf_escape($ea),$_,fun_adm_lang(142));elseif($ea=="")fun_adm_query_redirect("CREATE SEQUENCE ".fun_adm_idf_escape($E),$_,fun_adm_lang(143));elseif($ea!=$E)fun_adm_query_redirect("ALTER SEQUENCE ".fun_adm_idf_escape($ea)." RENAME TO ".fun_adm_idf_escape($E),$_,fun_adm_lang(144));else
fun_adm_redirect($_);}fun_adm_page_header($ea!=""?fun_adm_lang(145).": ".fun_adm_h($ea):fun_adm_lang(146),$l);if(!$L)$L["name"]=$ea;echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p><input name="name" value="',fun_adm_h($L["name"]),'" autocapitalize="off">
<input type="submit" value="',fun_adm_lang(83),'">
';if($ea!="")echo"<input type='submit' name='drop' value='".fun_adm_lang(85)."'".fun_adm_confirm().">\n";echo'<input type="hidden" name="token" value="',$U,'">
</form>
';}elseif(isset($_GET['type'])){$fa=$_GET["type"];$L=$_POST;if($_POST&&!$l){$_=substr(ADM_ME,0,-1);if($_POST["drop"])fun_adm_query_redirect("DROP TYPE ".fun_adm_idf_escape($fa),$_,fun_adm_lang(147));else
fun_adm_query_redirect("CREATE TYPE ".fun_adm_idf_escape(trim($L["name"]))." $L[as]",$_,fun_adm_lang(148));}fun_adm_page_header($fa!=""?fun_adm_lang(149).": ".fun_adm_h($fa):fun_adm_lang(150),$l);if(!$L)$L["as"]="AS ";echo'
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<p>
';if($fa!="")echo"<input type='submit' name='drop' value='".fun_adm_lang(85)."'".fun_adm_confirm().">\n";else{echo"<input name='name' value='".fun_adm_h($L['name'])."' autocapitalize='off'>\n";fun_adm_textarea("as",$L["as"]);echo"<p><input type='submit' value='".fun_adm_lang(83)."'>\n";}echo'<input type="hidden" name="token" value="',$U,'" />
</form>
';}elseif(isset($_GET['trigger'])){$b=$_GET["trigger"];$E=$_GET["name"];$ei=fun_adm_trigger_options();$L=(array)fun_adm_trigger($E)+array("Trigger"=>$b."_bi");if($_POST){if(!$l&&in_array($_POST["Timing"],$ei["Timing"])&&in_array($_POST["Event"],$ei["Event"])&&in_array($_POST["Type"],$ei["Type"])){$af=" ON ".fun_adm_table($b);$Xb="DROP TRIGGER ".fun_adm_idf_escape($E).($w=="pgsql"?$af:"");$A=ADM_ME."table=".urlencode($b);if($_POST["drop"])fun_adm_query_redirect($Xb,$A,fun_adm_lang(151));else{if($E!="")fun_adm_queries($Xb);fun_adm_queries_redirect($A,($E!=""?fun_adm_lang(152):fun_adm_lang(153)),fun_adm_queries(fun_adm_create_trigger($af,$_POST)));if($E!="")fun_adm_queries(fun_adm_create_trigger($af,$L+array("Type"=>reset($ei["Type"]))));}}$L=$_POST;}fun_adm_page_header(($E!=""?fun_adm_lang(154).": ".fun_adm_h($E):fun_adm_lang(155)),$l,array("table"=>$b));echo'
<form action="" method="post" enctype="application/x-www-form-urlencoded" id="form">
<table cellspacing="0">
<tr><th>',fun_adm_lang(156),'<td>',fun_adm_html_select("Timing",$ei["Timing"],$L["Timing"],"triggerChange(/^".preg_quote($b,"/")."_[ba][iud]$/, '".fun_adm_js_escape($b)."', this.form);"),'<tr><th>',fun_adm_lang(157),'<td>',fun_adm_html_select("Event",$ei["Event"],$L["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$ei["Event"])?" <input name='Of' value='".fun_adm_h($L["Of"])."' class='hidden'>":""),'<tr><th>',fun_adm_lang(13),'<td>',fun_adm_html_select("Type",$ei["Type"],$L["Type"]),'</table>
<p>',fun_adm_lang(93),': <input name="Trigger" value="',fun_adm_h($L["Trigger"]);?>" maxlength="64" autocapitalize="off" />
<script type="text/javascript">document.getElementById('form')['Timing'].onchange();</script>
<p><?php fun_adm_textarea("Statement",$L["Statement"]);echo'<p>
<input type="submit" value="',fun_adm_lang(83),'" />
';if($E!=""){echo'<input type="submit" name="drop" value="',fun_adm_lang(85),'"',fun_adm_confirm(),' />';}echo'<input type="hidden" name="token" value="',$U,'" />
</form>
';}elseif(isset($_GET['user'])){$ga=$_GET["user"];$Sf=array(""=>array("All privileges"=>""));foreach(fun_adm_get_rows("SHOW PRIVILEGES")as$L){foreach(explode(",",($L["Privilege"]=="Grant option"?"":$L["Context"]))as$sb)$Sf[$sb][$L["Privilege"]]=$L["Comment"];}$Sf["Server Admin"]+=$Sf["File access on server"];$Sf["Databases"]["Create routine"]=$Sf["Procedures"]["Create routine"];unset($Sf["Procedures"]["Create routine"]);$Sf["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Sf["Columns"][$X]=$Sf["Tables"][$X];unset($Sf["Server Admin"]["Usage"]);foreach($Sf["Tables"]as$y=>$X)unset($Sf["Databases"][$y]);$Ie=array();if($_POST){foreach($_POST["objects"]as$y=>$X)$Ie[$X]=(array)$Ie[$X]+(array)$_POST["grants"][$y];}$ed=array();$Ye="";if(isset($_GET["host"])&&($J=$g->query("SHOW GRANTS FOR ".fun_adm_q($ga)."@".fun_adm_q($_GET["host"])))){while($L=$J->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$L[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$B[1],$C,PREG_SET_ORDER)){foreach($C
as$X){if($X[1]!="USAGE")$ed["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$L[0]))$ed["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$L[0],$B))$Ye=$B[1];}}if($_POST&&!$l){$Ze=(isset($_GET["host"])?fun_adm_q($ga)."@".fun_adm_q($_GET["host"]):"''");if($_POST["drop"])fun_adm_query_redirect("DROP USER $Ze",ADM_ME."privileges=",fun_adm_lang(158));else{$Ke=fun_adm_q($_POST["user"])."@".fun_adm_q($_POST["host"]);$Cf=$_POST["pass"];if($Cf!=''&&!$_POST['hashed']){$Cf=$g->result("SELECT PASSWORD(".fun_adm_q($Cf).")");$l=!$Cf;}$zb=false;if(!$l){if($Ze!=$Ke){$zb=fun_adm_queries(($g->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $Ke IDENTIFIED BY PASSWORD ".fun_adm_q($Cf));$l=!$zb;}elseif($Cf!==$Ye)fun_adm_queries("SET PASSWORD FOR $Ke = ".fun_adm_q($Cf));}if(!$l){$ug=array();foreach($Ie
as$Se=>$dd){if(isset($_GET["grant"]))$dd=array_filter($dd);$dd=array_keys($dd);if(isset($_GET["grant"]))$ug=array_diff(array_keys(array_filter($Ie[$Se],'strlen')),$dd);elseif($Ze==$Ke){$We=array_keys((array)$ed[$Se]);$ug=array_diff($We,$dd);$dd=array_diff($dd,$We);unset($ed[$Se]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Se,$B)&&(!fun_adm_grant("REVOKE",$ug,$B[2]," ON $B[1] FROM $Ke")||!fun_adm_grant("GRANT",$dd,$B[2]," ON $B[1] TO $Ke"))){$l=true;break;}}}if(!$l&&isset($_GET["host"])){if($Ze!=$Ke)fun_adm_queries("DROP USER $Ze");elseif(!isset($_GET["grant"])){foreach($ed
as$Se=>$ug){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Se,$B))fun_adm_grant("REVOKE",array_keys($ug),$B[2]," ON $B[1] FROM $Ke");}}}fun_adm_queries_redirect(ADM_ME."privileges=",(isset($_GET["host"])?fun_adm_lang(159):fun_adm_lang(160)),!$l);if($zb)$g->query("DROP USER $Ke");}}fun_adm_page_header((isset($_GET["host"])?fun_adm_lang(46).": ".fun_adm_h("$ga@$_GET[host]"):fun_adm_lang(49)),$l,array("privileges"=>array('',fun_adm_lang(40))));if($_POST){$L=$_POST;$ed=$Ie;}else{$L=$_GET+array("host"=>$g->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$L["pass"]=$Ye;if($Ye!="")$L["hashed"]=true;$ed[(ADM_DB==""||$ed?"":fun_adm_idf_escape(addcslashes(ADM_DB,"%_\\"))).".*"]=array();}echo'<form action="" enctype="application/x-www-form-urlencoded" method="post">
<table cellspacing="0">
<tr><th>',fun_adm_lang(47),'<td><input name="host" maxlength="60" value="',fun_adm_h($L["host"]),'" autocapitalize="off" />
<tr><th>',fun_adm_lang(46),'<td><input name="user" maxlength="16" value="',fun_adm_h($L["user"]),'" autocapitalize="off" />
<tr><th>',fun_adm_lang(161),'<td><input name="pass" id="pass" value="',fun_adm_h($L["pass"]),'" />
';if(!$L['hashed']){echo'<script type="text/javascript">typePassword(document.getElementById(\'pass\'));</script>';}echo
fun_adm_checkbox("hashed",1,$L["hashed"],fun_adm_lang(162),"typePassword(this.form['pass'], this.checked);"),'</table>

';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".fun_adm_lang(40).fun_adm_doc_link(array('sql'=>"grant.html#priv_level"));$r=0;foreach($ed
as$Se=>$dd){echo'<th>'.($Se!="*.*"?"<input name='objects[$r]' value='".fun_adm_h($Se)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$r]' value='*.*' size='10'>*.*");$r++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>fun_adm_lang(47),"Databases"=>fun_adm_lang(33),"Tables"=>fun_adm_lang(10),"Columns"=>fun_adm_lang(12),"Procedures"=>fun_adm_lang(163),)as$sb=>$Qb){foreach((array)$Sf[$sb]as$Rf=>$kb){echo"<tr".fun_adm_odd()."><td".($Qb?">$Qb<td":" colspan='2'").' lang="en" title="'.fun_adm_h($kb).'">'.fun_adm_h($Rf);$r=0;foreach($ed
as$Se=>$dd){$E="'grants[$r][".fun_adm_h(strtoupper($Rf))."]'";$Y=$dd[strtoupper($Rf)];if($sb=="Server Admin"&&$Se!=(isset($ed["*.*"])?"*.*":".*"))echo"<td>&nbsp;";elseif(isset($_GET["grant"]))echo"<td><select name=$E><option><option value='1'".($Y?" selected":"").">".fun_adm_lang(164)."<option value='0'".($Y=="0"?" selected":"").">".fun_adm_lang(165)."</select>";else
echo"<td align='center'><label class='block'><input type='checkbox' name=$E value='1'".($Y?" checked":"").($Rf=="All privileges"?" id='grants-$r-all'":($Rf=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$r-all');\""))."></label>";$r++;}}}echo"</table>\n",'<p>
<input type="submit" value="',fun_adm_lang(83),'" />
<input type="submit" class="adm_refresh" value="',fun_adm_lang(38),'" />
';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="',fun_adm_lang(85),'"',fun_adm_confirm(),' />';}echo'<input type="hidden" name="token" value="',$U,'" />
</form>
';}elseif(isset($_GET['processlist'])){if(fun_adm_support("kill")&&$_POST&&!$l){$Qd=0;foreach((array)$_POST["kill"]as$X){if(fun_adm_queries("KILL ".fun_adm_number($X)))$Qd++;}fun_adm_queries_redirect(ADM_ME."processlist=",fun_adm_lang(166,$Qd),$Qd||!$_POST["kill"]);}fun_adm_page_header(fun_adm_lang(43),$l);echo"<p class='links'>\n";foreach(array(''=>fun_adm_lang(41),'database'=>fun_adm_lang(42),'privileges'=>fun_adm_lang(40),'processlist'=>fun_adm_lang(43),'variables'=>fun_adm_lang(44),'status'=>fun_adm_lang(45),)as$y=>$X){if(fun_adm_support($y)){if($y==='processlist')echo"<a class=\"meun_a_focus\" href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else{if($y)echo"<a href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else
echo"<a href='".fun_adm_h(ADM_ME)."'>$X</a>\n";}}}echo'</p>','
<form action="" enctype="application/x-www-form-urlencoded" method="post">
<table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable">

';$r=-1;foreach(fun_adm_process_list()as$r=>$L){if(!$r){echo"<thead><tr lang='en'>".(fun_adm_support("kill")?"<th>&nbsp;":"");foreach($L
as$y=>$X)echo"<th>$y</th>";echo"</thead>\n";}echo"<tr".fun_adm_odd().">".(fun_adm_support("kill")?"<td>".fun_adm_checkbox("kill[]",$L["Id"],0).'</td>':"");foreach($L
as$y=>$X)echo"<td>".(($w=="sql"&&$y=="Info"&&preg_match("~Query|Killed~",$L["Command"])&&$X!="")||($w=="pgsql"&&$y=="current_query"&&$X!="<IDLE>")||($w=="oracle"&&$y=="sql_text"&&$X!="")?"<code class='jush-$w'>".fun_adm_shorten_utf8($X,100,"</code>").' <a href="'.fun_adm_h(ADM_ME.($L["db"]!=""?"db=".urlencode($L["db"])."&":"")."sql=".urlencode($X)).'">'.fun_adm_lang(167).'</a>':fun_adm_nbsp($X)).'</td>';echo"</tr>\n";}echo'
</table>
<script type=\'text/javascript\'>tableCheck();</script>
<p>
';if(fun_adm_support("kill")){echo($r+1)."/".fun_adm_lang(168,$g->result("SELECT @@max_connections")),"<p><input type='submit' value='".fun_adm_lang(169)."'>\n",'<input type="submit" class="adm_refresh" value="'.fun_adm_lang(38).'" /> </p>';}echo'<input type="hidden" name="token" value="',$U,'" />
</form>';}elseif(isset($_GET['select'])){$b=$_GET['select'];$S=fun_adm_table_status1($b);$u=fun_adm_indexes($b);$n=fun_adm_fields($b);$Vc=fun_adm_column_foreign_keys($b);$Ve="";if($S["Oid"]){$Ve=($w=="sqlite"?"rowid":"oid");$u[]=array("type"=>"PRIMARY","columns"=>array($Ve));}parse_str(fun_adm_get_session('adminers_import'),$ra);$vg=array();$f=array();$Hh=null;foreach($n
as$y=>$m){$E=$c->fieldName($m);if(isset($m["privileges"]["select"])&&$E!=""){$f[$y]=html_entity_decode(strip_tags($E),ENT_QUOTES);if(fun_adm_is_shortable($m))$Hh=$c->selectLengthProcess();}$vg+=$m['privileges'];}list($N,$fd)=$c->selectColumnsProcess($f,$u);$Cd=count($fd)<count($N);$Z=$c->selectSearchProcess($n,$u);$lf=$c->selectOrderProcess($n,$u);$z=$c->selectLimitProcess();$ad=($N?implode(", ",$N):"*".($Ve?", $Ve":"")).fun_adm_convert_fields($f,$n,$N)."\nFROM ".fun_adm_table($b);$gd=($fd&&$Cd?"\nGROUP BY ".implode(", ",$fd):"").($lf?"\nORDER BY ".implode(", ",$lf):"");if($_GET['val']&&fun_adm_is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$ni=>$L){$Aa=fun_adm_convert_field($n[key($L)]);$N=array($Aa?$Aa:fun_adm_idf_escape(key($L)));$Z[]=fun_adm_where_check($ni,$n);$K=$Wb->select($b,$N,$Z,$N);if($K)echo
reset($K->fetch_row());}exit;}if($_POST&&!$l){$Li=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$Ya=array();foreach($_POST["check"]as$Wa)$Ya[]=fun_adm_where_check($Wa,$n);$Li[]="((".implode(") OR (",$Ya)."))";}$Li=($Li?"\nWHERE ".implode(" AND ",$Li):"");$Of=$pi=null;foreach($u
as$t){if($t["type"]=="PRIMARY"){$Of=array_flip($t["columns"]);$pi=($N?$Of:array());break;}}foreach((array)$pi
as$y=>$X){if(in_array(fun_adm_idf_escape($y),$N))unset($pi[$y]);}if($_POST['export']){fun_adm_set_session('adminers_import',"output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));fun_adm_dump_headers($b);if($_POST['output']==='text'&&$_POST['format']==='sql'){echo"-- Adminers $ha ".$_SERVER['STYPE'][ADM_DRIVER]." Print\n\n";if($w=="sql"){echo"SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';

";$g->query("SET time_zone = '+00:00';");}}$c->dumpTable($b,'');if(!is_array($_POST["check"])||$pi===array())$I="SELECT $ad$Li$gd";else{$li=array();foreach($_POST["check"]as$X)$li[]="(SELECT".fun_adm_limit($ad,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").fun_adm_where_check($X,$n).$gd,1).")";$I=implode(" UNION ALL ",$li);}$c->dumpData($b,"table",$I);exit();}if(!$c->selectEmailProcess($Z,$Vc)){if($_POST["save"]||$_POST["delete"]){$J=true;$ta=0;$O=array();if(!$_POST["delete"]){foreach($f
as$E=>$X){$X=fun_adm_process_input($n[$E]);if($X!==null&&($_POST["clone"]||$X!==false))$O[fun_adm_idf_escape($E)]=($X!==false?$X:fun_adm_idf_escape($E));}}if($_POST["delete"]||$O){if($_POST["clone"])$I="INTO ".fun_adm_table($b)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".fun_adm_table($b);if($_POST["all"]||($pi===array()&&is_array($_POST["check"]))||$Cd){$J=($_POST["delete"]?$Wb->delete($b,$Li):($_POST["clone"]?fun_adm_queries("INSERT $I$Li"):$Wb->update($b,$O,$Li)));$ta=$g->affected_rows;}else{foreach((array)$_POST["check"]as$X){$Ki="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").fun_adm_where_check($X,$n);$J=($_POST["delete"]?$Wb->delete($b,$Ki,1):($_POST["clone"]?fun_adm_queries("INSERT".fun_adm_limit1($I,$Ki)):$Wb->update($b,$O,$Ki)));if(!$J)break;$ta+=$g->affected_rows;}}}$D=fun_adm_lang(170,$ta);if($_POST["clone"]&&$J&&$ta==1){$Wd=fun_adm_last_id();if($Wd)$D=fun_adm_lang(74," $Wd");}fun_adm_queries_redirect(fun_adm_remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$D,$J);if(!$_POST["delete"]){fun_adm_edit_form($b,$n,(array)$_POST["fields"],!$_POST["clone"]);fun_adm_page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$l=fun_adm_lang(171);else{$J=true;$ta=0;foreach($_POST["val"]as$ni=>$L){$O=array();foreach($L
as$y=>$X){$y=fun_adm_bracket_escape($y,1);$O[fun_adm_idf_escape($y)]=(preg_match('~char|text~',$n[$y]["type"])||$X!=""?$c->processInput($n[$y],$X):"NULL");}$J=$Wb->update($b,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").fun_adm_where_check($ni,$n),!($Cd||$pi===array())," ");if(!$J)break;$ta+=$g->affected_rows;}fun_adm_queries_redirect(fun_adm_remove_from_uri(),fun_adm_lang(170,$ta),$J);}}elseif(!is_string($o=fun_adm_get_file("csv_file",true)))$l=fun_adm_upload_error($o);elseif(!preg_match('~~u',$o))$l=fun_adm_lang(172);else{fun_adm_set_session('adminers_import',"output=".urlencode($ra["output"])."&format=".urlencode($_POST['separator']));$J=true;$hb=array_keys($n);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$o,$C);$ta=count($C[0]);$Wb->begin();$Sg=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($C[0]as$y=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$Sg]*)$Sg~",$X.$Sg,$ne);if(!$y&&!array_diff($ne[1],$hb)){$hb=$ne[1];$ta--;}else{$O=array();foreach($ne[1]as$r=>$cb)$O[fun_adm_idf_escape($hb[$r])]=($cb==""&&$n[$hb[$r]]["null"]?"NULL":fun_adm_q(str_replace('""','"',preg_replace('~^"|"$~','',$cb))));$M[]=$O;}}$J=(!$M||$Wb->insertUpdate($b,$M,$Of));if($J)$Wb->commit();fun_adm_queries_redirect(fun_adm_remove_from_uri("page"),fun_adm_lang(173,$ta),$J);$Wb->rollback();}}}$vh=$c->tableName($S);if(fun_adm_is_ajax()){fun_adm_page_headers();ob_start();}else
fun_adm_page_header($vh,$l);$O=null;if(isset($vg["insert"])||!fun_adm_support("table")){$O="";foreach((array)$_GET["where"]as$X){if(count($Vc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$O.="&set".urlencode("[".fun_adm_bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$c->selectLinks($S,$O);if(!$f&&fun_adm_support("table"))echo"<p class='error'>".fun_adm_lang(174).($n?".":": ".fun_adm_error())."\n";else{echo"<form action='' enctype=\"application/x-www-form-urlencoded\" id='form'>\n","<div style='display: none;'>";fun_adm_hidden_fields_get();echo(ADM_DB!=""?'<input type="hidden" name="db" value="'.fun_adm_h(ADM_DB).'">'.(isset($_GET['ns'])?'<input type="hidden" name="ns" value="'.fun_adm_h($_GET['ns']).'">':""):"");echo'<input type="hidden" name="select" value="'.fun_adm_h($b).'">',"</div>\n";$c->selectColumnsPrint($N,$f);$c->selectSearchPrint($Z,$f,$u);$c->selectOrderPrint($lf,$f,$u);$c->selectLimitPrint($z);$c->selectLengthPrint($Hh);$c->selectActionPrint($u);echo"</form>\n";$G=$_GET['page'];if($G=="last"){$Yc=$g->result(fun_adm_count_rows($b,$Z,$Cd,$fd));$G=floor(max(0,$Yc-1)/$z);}$Pg=$N;if(!$Pg){$Pg[]="*";if($Ve)$Pg[]=$Ve;}$vb=fun_adm_convert_fields($f,$n,$N);if($vb)$Pg[]=substr($vb,2);$J=$Wb->select($b,$Pg,$Z,$fd,$lf,$z,$G,true);if(!$J)echo"<p class='error'>".fun_adm_error()."\n";else{if($w=="mssql"&&$G)$J->seek($z*$G);$kc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($G&&$w=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$z&&$fd&&$Cd&&$w=="sql")$Yc=$g->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".fun_adm_lang(175)."\n";else{$Ia=$c->backwardKeys($b,$vh);echo'<p id="adm_hide" class="pages"></p>',"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$fd&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".fun_adm_h($_GET["modify"]?fun_adm_remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".fun_adm_lang(176)."</a>");$Ge=array();$bd=array();reset($N);$ig=1;foreach($M[0]as$y=>$X){if($y!=$Ve){$X=$_GET["columns"][key($N)];$m=$n[$N?($X?$X["col"]:current($N)):$y];$E=($m?$c->fieldName($m,$ig):($X["fun"]?"*":$y));if($E!=""){$ig++;$Ge[$y]=$E;$e=fun_adm_idf_escape($y);$nd=fun_adm_remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($y);$Qb="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.fun_adm_h($nd.($lf[0]==$e||$lf[0]==$y||(!$lf&&$Cd&&$fd[0]==$e)?$Qb:'')).'">';echo
fun_adm_apply_sql_function($X["fun"],$E)."</a>";echo"<span class='column hidden'>";if(!$X['fun'])echo'<a href="#fieldset-search" onclick="selectSearch(\''.fun_adm_h(fun_adm_js_escape($y)).'\'); return false;" title="'.fun_adm_lang(177).'" class="text jsonly"> =</a>';echo"</span>";}$bd[$y]=$X["fun"];next($N);}}$de=array();if($_GET['modify']){foreach($M
as$L){foreach($L
as$y=>$X)$de[$y]=max($de[$y],min(40,strlen(utf8_decode($X))));}}echo($Ia?"<th>".fun_adm_lang(178):"")."</thead>\n";if(fun_adm_is_ajax()){if($z%2==1&&$G%2==1)fun_adm_odd();ob_end_clean();}foreach($c->rowDescriptions($M,$Vc)as$Fe=>$L){$mi=fun_adm_unique_array($M[$Fe],$u);if(!$mi){$mi=array();foreach($M[$Fe]as$y=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$y))$mi[$y]=$X;}}$ni="";foreach($mi
as$y=>$X){if(($w=="sql"||$w=="pgsql")&&strlen($X)>64){$y=(strpos($y,'(')?$y:fun_adm_idf_escape($y));$y="MD5(".($w=='sql'&&preg_match("~^utf8_~",$n[$y]["collation"])?$y:"CONVERT($y USING ".fun_adm_charset($g).")").")";$X=md5($X);}$ni.="&".($X!==null?urlencode("where[".fun_adm_bracket_escape($y)."]")."=".urlencode($X):"null%5B%5D=".urlencode($y));}echo"<tr".fun_adm_odd().">".(!$fd&&$N?"":"<td>".fun_adm_checkbox("check[]",substr($ni,1),in_array(substr($ni,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Cd||fun_adm_information_schema(ADM_DB)?"":" <a href='".fun_adm_h(ADM_ME."edit=".urlencode($b).$ni)."'>".fun_adm_lang(179)."</a>"));foreach($L
as$y=>$X){if(isset($Ge[$y])){$m=$n[$y];if($X!=""&&(!isset($kc[$y])||$kc[$y]!=""))$kc[$y]=(fun_adm_is_mail($X)?$Ge[$y]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$m["type"])&&$X!="")$_=ADM_ME.'download='.urlencode($b).'&field='.urlencode($y).$ni;if(!$_&&$X!==null){foreach((array)$Vc[$y]as$p){if(count($Vc[$y])==1||end($p["source"])==$y){$_="";foreach($p["source"]as$r=>$eh)$_.=fun_adm_where_link($r,$p["target"][$r],$M[$Fe][$eh]);$_=($p["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($p["db"]),ADM_ME):ADM_ME).'select='.urlencode($p["table"]).$_;if(count($p["source"])==1)break;}}}if($y=="COUNT(*)"){$_=ADM_ME."select=".urlencode($b);$r=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$mi))$_.=fun_adm_where_link($r++,$W["col"],$W["val"],$W["op"]);}foreach($mi
as$x=>$W)$_.=fun_adm_where_link($r++,$x,$W);}$X=fun_adm_select_value($X,$_,$m,$Hh);$pd=fun_adm_h("val[$ni][".fun_adm_bracket_escape($y)."]");$Y=$_POST["val"][$ni][fun_adm_bracket_escape($y)];$gc=!is_array($L[$y])&&fun_adm_is_utf8($X)&&$M[$Fe][$y]==$L[$y]&&!$bd[$y];$Gh=preg_match('~text|lob~',$m["type"]);if(($_GET["modify"]&&$gc)||$Y!==null){$id=fun_adm_h($Y!==null?$Y:$L[$y]);echo"<td>".($Gh?"<textarea name='$pd' cols='30' rows='".(substr_count($L[$y],"\n")+1)."'>$id</textarea>":"<input name='$pd' value='$id' size='$de[$y]'>");}else{$le=strpos($X,"<i>...</i>");echo"<td id='$pd' onclick=\"selectClick(this, event, ".($le?2:($Gh?1:0)).($gc?"":", '".fun_adm_h(fun_adm_lang(180))."'").");\">$X";}}}if($Ia)echo"<td>";$c->backwardKeysPrint($Ia,$M[$Fe]);echo"</tr>\n";}if(fun_adm_is_ajax())exit;echo"</table>\n";}if(($M||$G)&&!fun_adm_is_ajax()){$xc=true;if($_GET["page"]!="last"){if(!+$z)$Yc=count($M);elseif($w!="sql"||!$Cd){$Yc=($Cd?false:fun_adm_found_rows($S,$Z));if($Yc<max(1e4,2*($G+1)*$z)){$od=fun_adm_slow_query(fun_adm_count_rows($b,$Z,$Cd,$fd));$Yc=reset($od);}else$xc=false;}}if(+$z&&($Yc===false||$Yc>$z||$G)){echo"<p id=\"adm_pages\" class=\"pages\">";$re=($Yc===false?$G+(count($M)>=$z?2:1):floor(($Yc-1)/$z));if($w!=='simpledb'){echo'<a href="'.fun_adm_h(fun_adm_remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".fun_adm_lang(181)."', '".($G+1)."'), event); return false;\">".fun_adm_lang(181)."</a>:",fun_adm_pagination(0,$G).($G>5?'':'');for($r=max(1,$G-4);$r<min($re,$G+5);$r++)echo
fun_adm_pagination($r,$G);if($re>0){echo($G+5<$re?'..':''),($xc&&$Yc!==false?fun_adm_pagination($re,$G):" <a href='".fun_adm_h(fun_adm_remove_from_uri("page")."&page=last")."' title='~$re'>".fun_adm_lang(182)."</a>");}echo(($Yc===false?count($M)+1:$Yc-$G*$z)>$z?' <a href="'.fun_adm_h(fun_adm_remove_from_uri("page")."&page=".($G+1)).'" onclick="return !selectLoadMore(this, '.(+$z).', \''.fun_adm_lang(183).'...\');" class="loadmore">'.fun_adm_lang(184).'</a>':'');}else{echo
fun_adm_lang(181).":",fun_adm_pagination(0,$G).($G>1?" ...":""),($G?fun_adm_pagination($G,$G):""),($re>$G?fun_adm_pagination($G+1,$G).($re>$G+1?" ...":""):"");}echo'</p>';}echo"<p class='count' title=\"{$Yc}\">\n",($Yc!==false?"(".($xc?"":"~ ").fun_adm_lang(54,$Yc).") ":"");$Ub=($xc?"":"~ ").$Yc;echo
fun_adm_checkbox("all",1,0,fun_adm_lang(185),"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Ub' : checked); selectCount('selected2', this.checked || !checked ? '$Ub' : checked);")."\n",'</p>';if($c->selectCommandPrint()){echo'<fieldset',($_GET['modify']?'':' class="jsonly"'),'><legend>',fun_adm_lang(176),'</legend>
<div>
<input type="submit" class="adm_refresh" value="',fun_adm_lang(38),'" />
<input type="submit" value="',fun_adm_lang(83),'"',($_GET["modify"]?'':' title="'.fun_adm_lang(171).'"'),' />
</div></fieldset>
<fieldset><legend>',fun_adm_lang(186),' <span id="selected"></span></legend><div>
<input type="submit" name="edit" value="',fun_adm_lang(48),'" />
<input type="submit" name="clone" value="',fun_adm_lang(167),'" />
<input type="submit" name="delete" value="',fun_adm_lang(187),'"',fun_adm_confirm(),' />
</div></fieldset>
';}$Wc=$c->dumpFormat();foreach((array)$_GET["columns"]as$e){if($e["fun"]){unset($Wc['sql']);break;}}if($Wc){fun_adm_print_fieldset("export",fun_adm_lang(30)." <span id='selected2'></span>");$vf=$c->dumpOutput();echo($vf?fun_adm_html_select("output",$vf,$ra["output"])." ":""),fun_adm_html_select("format",$Wc,$ra["format"])," <input type='submit' name='export' value='".fun_adm_lang(30)."'>\n","</div></fieldset>\n";}echo(!$fd&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($c->selectImportPrint()){fun_adm_print_fieldset('import',fun_adm_lang(50),!$M);echo"<input type='file' name='csv_file'> ",fun_adm_html_select("separator",array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV'),$ra['format'],1);echo" <input type='submit' name='import' value='".fun_adm_lang(50)."'>","</div></fieldset>\n";}$c->selectEmailPrint(array_filter($kc,'strlen'),$f);echo"<p><input type='hidden' name='token' value='$U'></p>\n","</form>\n";}}if(fun_adm_is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET['variables'])){$P=isset($_GET['status']);fun_adm_page_header($P?fun_adm_lang(45):fun_adm_lang(44));echo"<p class='links'>\n";foreach(array('index'=>fun_adm_lang(41),'database'=>fun_adm_lang(42),'privileges'=>fun_adm_lang(40),'processlist'=>fun_adm_lang(43),'variables'=>fun_adm_lang(44),'status'=>fun_adm_lang(45),)as$y=>$X){if(fun_adm_support($y)){$y==='index'&&$y='';if($P&&$y==='status')echo"<a class=\"meun_a_focus\" href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else
if(!$P&&$y==='variables')echo"<a class=\"meun_a_focus\" href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else{if($y)echo"<a href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else
echo"<a href='".fun_adm_h(ADM_ME)."'>$X</a>\n";}}}echo'</p>';$Ei=($P?fun_adm_show_status():fun_adm_show_variables());if(!$Ei)echo"<p class='message'>".fun_adm_lang(175)."</p>\n";else{echo"<table cellspacing='0'>\n";foreach($Ei
as$y=>$X){echo"<tr>","<th><code class='jush-".$w.($P?"status":"set")."'>".fun_adm_h($y)."</code></th>","<td>".fun_adm_nbsp($X).'</td></tr>';}echo"</table>\n";}}elseif(isset($_GET['script'])){header('Content-Type: text/javascript; charset=utf-8');set_time_limit(300);if($_GET["script"]=='db'){$rh=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(fun_adm_table_status()as$E=>$S){fun_adm_json_row("Comment-$E",fun_adm_nbsp($S["Comment"]));if(!fun_adm_is_view($S)){foreach(array("Engine","Collation")as$y)fun_adm_json_row("$y-$E",fun_adm_nbsp($S[$y]));foreach($rh+array("Auto_increment"=>0,"Rows"=>0)as$y=>$X){if($S[$y]!=""){$X=fun_adm_format_number($S[$y]);if($y==='Data_length'||$y==='Index_length')$X=fun_adm_sizeformat($X);fun_adm_json_row("$y-$E",($y=="Rows"&&$X&&$S["Engine"]==((isset($gh)&&$gh=="pgsql")?"table":"InnoDB")?"~ $X":$X));if(isset($rh[$y]))$rh[$y]+=($S["Engine"]!="InnoDB"||$y!="Data_free"?$S[$y]:0);}elseif(array_key_exists($y,$S))fun_adm_json_row("$y-$E");}}}foreach($rh
as$y=>$X){$X=fun_adm_format_number($X);if($y==='Data_length'||$y==='Index_length')$X=fun_adm_sizeformat($X);fun_adm_json_row("sum-$y",$X);}fun_adm_json_row("");}elseif($_GET["script"]=="kill")$g->query("KILL ".fun_adm_number($_POST["kill"]));else{$Jd=false;$za=fun_adm_count_tables($c->databases());$Cg=fun_adm_get_session('DatabaseSize');!$Cg&&$Cg=array();foreach($za
as$k=>$X){fun_adm_json_row("tables-$k",$X);if(!isset($Cg[$k])){$Cg[$k]=fun_adm_sizeformat(fun_adm_db_size($k));$Jd=true;}fun_adm_json_row("size-$k",$Cg[$k]);}if($Jd)fun_adm_set_session('DatabaseSize',$Cg);fun_adm_json_row("");unset($za);}exit;}elseif(isset($_GET['adm_api'])){$na=$_GET['adm_api'];if($_POST){$si=$_POST['upurl'];$ve=$_POST['md5s'];}$Jh=__FILE__;clearstatcache();$Ed=false;if(is_writable($Jh))$Ed=true;$Lc=date('Y-m-d H:i:s',ADM_VER_TIME);$Oc=sprintf('%0.2f',filesize($Jh)/1024);$Mc=md5_file($Jh);if($_POST){if(ADM_IS_ONCE!==true||strlen($ve)!==32||!$si)exit($this->conf_note['api_10001']);if($Ed!==true)exit($this->conf_note['api_10005']);$Db=@fun_adm_geturl($si);if($ve!==md5($Db))exit($this->conf_note['api_10002']);if($Db){file_put_contents($Jh,$Db);exit($this->conf_note['api_10004']);}exit($this->conf_note['api_10002']);}fun_adm_page_header(fun_adm_lang(188),'');echo'<script type="text/javascript">
var Generation_time = \'',ADM_VER_TIME,'\';
var Generation_date = \'',date('Y-m-d H:i:s',ADM_VER_TIME),'\';
</script>
',sprintf($this->conf_note['api_index'],htmlspecialchars($this->conf_note['api_php']),ADM_USER_DATA,ADM_URL,ADM_THIS_URL,$Mc,fun_adm_rand(),$U,__FILE__.' '.($Ed?'<span style="color: green;">'.$this->conf_note['apiok'].'</span>':'<span style="color:red;">'.$this->conf_note['apiwrerr'].'</span>'),$Lc,$Oc,$Mc,ADM_THIS_URL,$this->def_lang_in('feedback')),'
';}else{$_h=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($_h&&!$l&&!$_POST["search"]){$J=true;$D="";if($w=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))fun_adm_queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$J=fun_adm_truncate_tables($_POST["tables"]);$D=fun_adm_lang(189);}elseif($_POST["move"]){$J=fun_adm_move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=fun_adm_lang(190);}elseif($_POST["copy"]){$J=fun_adm_copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$D=fun_adm_lang(191);}elseif($_POST["drop"]){if($_POST["views"])$J=fun_adm_drop_views($_POST["views"]);if($J&&$_POST["tables"])$J=fun_adm_drop_tables($_POST["tables"]);$D=fun_adm_lang(192);}elseif($w!="sql"){$J=($w=="sqlite"?fun_adm_queries("VACUUM"):fun_adm_apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$D=fun_adm_lang(193);}elseif(!$_POST["tables"])$D=fun_adm_lang(71);elseif($J=fun_adm_queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('fun_adm_idf_escape',$_POST["tables"])))){while($L=$J->fetch_assoc())$D.="<b>".fun_adm_h($L["Table"])."</b>: ".fun_adm_h($L["Msg_text"])."<br>";}fun_adm_queries_redirect(substr(ADM_ME,0,-1),$D,$J);}$Ne=isset($_POST['search'])?$_POST['search']:'';$Le=isset($_POST['query'])?$_POST['query']:'';$Me=isset($_GET['ns'])?$_GET['ns']:'';fun_adm_page_header(ADM_DB,$l,true);fun_adm_set_session('sel_table',null);if($c->homepage()){if(!$Me){$zh=fun_adm_tables_list();if(!$zh)echo"<p class='message'>".fun_adm_lang(71)."\n";else{echo"<form action=\"\" enctype=\"application/x-www-form-urlencoded\" method=\"post\">\n";if(fun_adm_support("table")){echo"<fieldset><legend>".fun_adm_lang(194)." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".fun_adm_h($Le)."'> <input type='submit' name='search' value='".fun_adm_lang(177)."' /> \n",'<input type="submit" class="adm_refresh" value="'.fun_adm_lang(38).'" />',"</div></fieldset>\n";if($Ne&&$Le)fun_adm_search_tables();}echo"<fieldset><legend>".fun_adm_lang(37).fun_adm_lang(10)."</legend><div>","<select id=\"selectjump\" name=\"select\">";foreach($zh
as$E=>$V)echo"<option value=\"{$E}\">{$E}</option>";echo"</select>\n",'<input type="submit" onclick="return adm_table_link(\''.ADM_ME.'\', $(\'#selectjump\').val());" value="'.fun_adm_lang(195).'" />',"</div></fieldset>\n","<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);"></td>','<td>'.fun_adm_lang(10).'['.count($zh).']','</td><td>'.fun_adm_lang(196),'</td><td>'.fun_adm_lang(197),'</td><td>'.fun_adm_lang(39),'</td><td>'.fun_adm_lang(198),'</td><td>'.fun_adm_lang(199),'</td><td>'.fun_adm_lang(14),'<td>'.fun_adm_lang(200).'</td>',(fun_adm_support("comment")?'<td>'.fun_adm_lang(11).'</td>':''),"</tr></thead>\n";$T=0;foreach($zh
as$E=>$V){$Gi=($V!==null&&!preg_match('~table~i',$V));echo'<tr'.fun_adm_odd().'><td>'.fun_adm_checkbox(($Gi?"views[]":"tables[]"),$E,in_array($E,$_h,true),"","formUncheck('check-all');"),'<th>'.(fun_adm_support("table")||fun_adm_support("indexes")?'<a href="'.fun_adm_h(ADM_ME).'select='.urlencode($E).'" title="'.fun_adm_lang(201).'">'.fun_adm_h($E).'</a>':fun_adm_h($E));if($Gi){echo'<td colspan="6"><a href="'.fun_adm_h(ADM_ME)."view=".urlencode($E).'" title="'.fun_adm_lang(123).'">'.(preg_match('~materialized~i',$V)?fun_adm_lang(202):fun_adm_lang(9)).'</a>','<td align="right"><a href="'.fun_adm_h(ADM_ME)."select=".urlencode($E).'" title="'.fun_adm_lang(203).'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",fun_adm_lang(78)),"Index_length"=>array("indexes",fun_adm_lang(17)),"Data_free"=>array("edit",fun_adm_lang(204)),"Auto_increment"=>array("auto_increment=1&create",fun_adm_lang(78)),"Rows"=>array("select",fun_adm_lang(203)),)as$y=>$_){$pd=" id='$y-".fun_adm_h($E)."'";echo($_?"<td align='right'>".(fun_adm_support("table")||$y=="Rows"||(fun_adm_support("indexes")&&$y!="Data_length")?"<a $pd title='$_[1]'>..</a>":"<a$pd>?</span>"):"<td id='$y-".fun_adm_h($E)."'>&nbsp;");}$T++;}echo(fun_adm_support("comment")?"<td id='Comment-".fun_adm_h($E)."'>&nbsp;":"");}echo"<tr><td>&nbsp;<th>".fun_adm_lang(168,count($zh)),"<td>".fun_adm_nbsp($w=="sql"?$g->result("SELECT @@storage_engine"):""),"<td>".fun_adm_nbsp(fun_adm_db_collation(ADM_DB,fun_adm_collations()));foreach(array("Data_length","Index_length","Data_free")as$y)echo"<td align='right' id='sum-$y'>&nbsp;";echo"</table>\n";if(!fun_adm_information_schema(ADM_DB)){$Bi="<input type='submit' value='".fun_adm_lang(205)."'".fun_adm_on_help("'VACUUM'")."> ";$hf="<input type='submit' name='optimize' value='".fun_adm_lang(206)."'".fun_adm_on_help($w=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".fun_adm_lang(186)." <span id='selected'></span></legend><div>".($w=="sqlite"?$Bi:($w=="pgsql"?$Bi.$hf:($w=="sql"?"<input type='submit' value='".fun_adm_lang(207)."'".fun_adm_on_help("'ANALYZE TABLE'")."> ".$hf."<input type='submit' name='check' value='".fun_adm_lang(208)."'".fun_adm_on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".fun_adm_lang(209)."'".fun_adm_on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".fun_adm_lang(210)."'".fun_adm_confirm().fun_adm_on_help($w=="sqlite"?"'DELETE'":"'TRUNCATE".($w=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".fun_adm_lang(85)."'".fun_adm_confirm().fun_adm_on_help("'DROP TABLE'").">\n";$j=(fun_adm_support("scheme")?$c->schemas():$c->databases());if(count($j)!=1&&$w!="sqlite"){$k=(isset($_POST["target"])?$_POST["target"]:(fun_adm_support("scheme")?$_GET['ns']:ADM_DB));echo"<p>".fun_adm_lang(211).": ",($j?fun_adm_html_select("target",$j,$k):'<input name="target" value="'.fun_adm_h($k).'" autocapitalize="off">')," <input type='submit' name='move' value='".fun_adm_lang(212)."'>",(fun_adm_support("copy")?" <input type='submit' name='copy' value='".fun_adm_lang(213)."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(fun_adm_support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $T);":"")."\">\n";echo"<input type='hidden' name='token' value='$U'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'create=">'.fun_adm_lang(79)."</a>\n",(fun_adm_support("view")?'<a href="'.fun_adm_h(ADM_ME).'view=">'.fun_adm_lang(122)."</a>\n":""),(fun_adm_support("materializedview")?'<a href="'.fun_adm_h(ADM_ME).'view=&amp;materialized=1">'.fun_adm_lang(121)."</a>\n":"");if(fun_adm_support("routine")){echo"<h3 id='routines'>".fun_adm_lang(34)."</h3>\n";$_g=fun_adm_routines();if($_g){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.fun_adm_lang(93).'<td>'.fun_adm_lang(13).'<td>'.fun_adm_lang(141)."<td>&nbsp;</thead>\n";fun_adm_odd('');foreach($_g
as$L){echo'<tr'.fun_adm_odd().'>','<th><a href="'.fun_adm_h(ADM_ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($L["ROUTINE_NAME"]).'">'.fun_adm_h($L["ROUTINE_NAME"]).'</a>','<td>'.fun_adm_h($L["ROUTINE_TYPE"]),'<td>'.fun_adm_h($L["DTD_IDENTIFIER"]),'<td><a href="'.fun_adm_h(ADM_ME).($L["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($L["ROUTINE_NAME"]).'">'.fun_adm_lang(23)."</a>";}echo"</table>\n";}echo'<p class="links">'.(fun_adm_support("procedure")?'<a href="'.fun_adm_h(ADM_ME).'procedure=">'.fun_adm_lang(139).'</a>':'').'<a href="'.fun_adm_h(ADM_ME).'function=">'.fun_adm_lang(138)."</a>\n";}if(fun_adm_support("sequence")){echo"<h3 id='sequences'>".fun_adm_lang(214)."</h3>\n";$Tg=fun_adm_get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($Tg){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(93)."</thead>\n";fun_adm_odd('');foreach($Tg
as$X)echo"<tr".fun_adm_odd()."><th><a href='".fun_adm_h(ADM_ME)."sequence=".urlencode($X)."'>".fun_adm_h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".fun_adm_h(ADM_ME)."sequence='>".fun_adm_lang(146)."</a>\n";}if(fun_adm_support("type")){echo"<h3 id='user-types'>".fun_adm_lang(215)."</h3>\n";$zi=fun_adm_types();if($zi){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(93)."</thead>\n";fun_adm_odd('');foreach($zi
as$X)echo"<tr".fun_adm_odd()."><th><a href='".fun_adm_h(ADM_ME)."type=".urlencode($X)."'>".fun_adm_h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".fun_adm_h(ADM_ME)."type='>".fun_adm_lang(150)."</a>\n";}if(fun_adm_support("event")){echo"<h3 id='events'>".fun_adm_lang(35)."</h3>\n";$M=fun_adm_get_rows("SHOW EVENTS");if($M){echo"<table cellspacing='0'>\n","<thead><tr><th>".fun_adm_lang(93)."<td>".fun_adm_lang(216)."<td>".fun_adm_lang(129)."<td>".fun_adm_lang(130)."<td></thead>\n";foreach($M
as$L){echo"<tr>","<th>".fun_adm_h($L["Name"]),"<td>".($L["Execute at"]?fun_adm_lang(217)."<td>".$L["Execute at"]:fun_adm_lang(131)." ".$L["Interval value"]." ".$L["Interval field"]."<td>$L[Starts]"),"<td>$L[Ends]",'<td><a href="'.fun_adm_h(ADM_ME).'event='.urlencode($L["Name"]).'">'.fun_adm_lang(23).'</a>';}echo"</table>\n";$vc=$g->result("SELECT @@event_scheduler");if($vc&&$vc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".fun_adm_h($vc)."\n";}echo'<p class="links"><a href="'.fun_adm_h(ADM_ME).'event=">'.fun_adm_lang(128)."</a>\n";}if($zh)echo"<script type='text/javascript'>ajaxSetHtml('".fun_adm_js_escape(ADM_ME)."script=db&adm_rand=".urlencode(microtime(true))."');</script>\n";}}}fun_adm_page_footer();}}function
fun_adm_get_lang(){global$a;return$a;}function
fun_adm_lang($s,$Re=null){global$a,$bi;$ai=(isset($bi[$s])?$bi[$s]:$s);if(is_array($ai)){$Lf=($Re==1?0:($a=='cs'||$a=='sk'?($Re&&$Re<5?1:2):($a=='fr'?(!$Re?0:1):($a=='pl'?($Re%10>1&&$Re%10<5&&$Re/10%10!=1?1:2):($a=='sl'?($Re%100==1?0:($Re%100==2?1:($Re%100==3||$Re%100==4?2:3))):($a=='lt'?($Re%10==1&&$Re%100!=11?0:($Re%10>1&&$Re/10%10!=1?1:2)):($a=='ru'||$a=='sr'||$a=='uk'?($Re%10==1&&$Re%100!=11?0:($Re%10>1&&$Re%10<5&&$Re/10%10!=1?1:2)):1)))))));$ai=$ai[$Lf];}$ya=func_get_args();array_shift($ya);$Wc=str_replace("%d","%s",$ai);if($Wc!=$ai)$ya[0]=fun_adm_format_number($Re);return
vsprintf($Wc,$ya);}function
fun_adm_switch_lang(){global$a,$Ud;$F=fun_adm_object();echo"<form action=\"\" enctype=\"application/x-www-form-urlencoded\" method='post'>\n<div id=\"lang\">",fun_adm_html_select("lang",$Ud,$a,"this.form.submit();")," <input type=\"submit\" value='".fun_adm_lang(218)."' class='hidden'>\n","<input type=\"hidden\" name='token' value='".fun_adm_get_token()."'>\n";echo'<input type="submit" onclick="return checkup()" class="checkup" value="'.$F->def_lang_in('update').'" /> ','<input type="submit" class="adm_refresh" value="'.fun_adm_lang(38).'" />',"</div>\n</form>\n";}function
fun_adm_getdef_lang(){global$Ud;$a='zh';$Yg=fun_adm_get_session('lang');if(isset($Ud[$Yg]))$a=$Yg;else{$ma=array();preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~',str_replace("_","-",strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])),$C,PREG_SET_ORDER);foreach($C
as$B)$ma[$B[1]]=(isset($B[3])?$B[3]:1);arsort($ma);foreach($ma
as$y=>$H){if(isset($Ud[$y])){$a=$y;break;}$y=preg_replace('~-.*~','',$y);if(!isset($ma[$y])&&isset($Ud[$y])){$a=$y;break;}}}return$a;}function
fun_adm_geturl($ti){$kf=array('http'=>array('method'=>'GET','header'=>'Content-Type: text/html; charset=utf-8','timeout'=>300,));$sb=stream_context_create($kf);return@file_get_contents($ti,false,$sb);}function
fun_adm_hexXbin($Db,$ii=false){if(!is_string($Db))return
0;if($ii===false){$be=strlen($Db);if($be%2)return
0;else
if(strspn($Db,'0123456789abcdefABCDEF')!=$be)return
0;return
pack('H*',$Db);}else
return
bin2hex($Db);}function
fun_adm_shuffle(&$_a){$Pd=array_keys($_a);shuffle($Pd);foreach($Pd
as$y)$He[$y]=$_a[$y];$_a=$He;return
true;}function
fun_adm_constant($nb){if(defined($nb))return
constant($nb);return
null;}function
fun_adm_incl($o){global$ha;$wf=array();$wf['time']=ADM_VER_TIME;$wf['file']=$o;$wf['ver']=$ha;fun_adm_shuffle($wf);$La=bin2hex(http_build_query($wf));$o=ADM_ME.'admcode='.$La;return$o;}function
fun_adm_jscss(){$F=fun_adm_object();if($F->conf_css)echo'<!-- A_CSS include --><link rel="stylesheet" type="text/css" href="'.$F->conf_css.'" />'."\n";if($F->conf_js)echo'<!-- A_JS include --><script type="text/javascript" src="'.$F->conf_js.'"></script>'."\n";}function
fun_adm_DATA(){return
ADM_USER_DATA;}function
fun_adm_DATA_parse($Ef=null){if($Ef&&is_dir($Ef)&&fun_adm_isWritablePath($Ef))return
rtrim($Ef,'\\/').DIRECTORY_SEPARATOR;else{$Ef='./ADATA/';if(is_dir($Ef)&&fun_adm_isWritablePath($Ef))return
realpath($Ef).DIRECTORY_SEPARATOR;$Ef=sys_get_temp_dir().DIRECTORY_SEPARATOR;return$Ef;}}function
fun_adm_isWritablePath($o){if(!$o)return
false;if(is_dir($o)){$Sb=rtrim($o,'/\\');if($Zc=@fopen("$Sb/adminers.txt",'w')){@fclose($Zc);@unlink("$Sb/adminers.txt");$Mi=true;}else$Mi=false;}else{if($Zc=@fopen($o,'a+')){@fclose($Zc);$Mi=true;}else$Mi=false;}return$Mi;}function
fun_adm_auth_error($Ce=null){$Hg=fun_adm_get_session('token');$Fg=fun_adm_get_session('lang');$Eg=fun_adm_get_session('adm_logout');$Gg=fun_adm_get_session('show_msg');$Dg=fun_adm_get_session('Longin_Info');unset($_SESSION[ADM_USER_SID]);fun_adm_set_session('token',$Hg);fun_adm_set_session('lang',$Fg);fun_adm_set_session('adm_logout',$Eg);fun_adm_set_session('show_msg',$Gg);fun_adm_set_session('Longin_Info',$Dg);unset($fg);if($_POST){if(ADM_API)fun_adm_set_session('adm_logout',time());fun_adm_redirect(0,$Ce);}}function
fun_adm__(&$Di){$Kd=isset($Di);$jg=(!$Kd)?($Di=null):$Di;return$jg;}function
fun_adm_query($I){$_SERVER['SQL'][]=$I;}function
fun_adm_rand(){return
md5(microtime(true).rand(1,999).str_shuffle(md5(time())));}function
fun_adm_sid(){if(ADM_ISAPI){$F=fun_adm_object();$ji='ADMINERS'.md5($F->driver.$F->conf_dbuser.ADM_VER_TIME.$F->conf_dbpass);}else{if(strlen($_COOKIE['adminers_sid'])===40)$ji=$_COOKIE['adminers_sid'];else$ji='ADMINERS'.md5($_SERVER['REMOTE_ADDR'].uniqid('Adminers'.microtime(true),true));}return
strtoupper($ji);}function
fun_adm_sizeformat($bh){$bh=strtr($bh,array(','=>''));$ch='';if($bh<1)return
0;else
if($bh<1024)return$bh.' K~';else
if($bh<(1024*1024)){$bh=round($bh/1024,1);return
sprintf('%.2f',$bh).' KB';}else
if($bh<(1024*1024*1024)){$bh=round($bh/(1024*1024),1);return
sprintf('%.2f',$bh).' MB';}else{$bh=round($bh/(1024*1024*1024),1);return
sprintf('%.2f',$bh).' GB';}}function
fun_adm_idf_unescape($s){$Vd=substr($s,-1);return
str_replace($Vd.$Vd,$Vd,substr($s,1,-1));}function
fun_adm_number($X){return
preg_replace('~[^0-9]+~','',$X);}function
fun_adm_remove_slashes($Tf,$Pc=false){if(get_magic_quotes_gpc()){while(list($y,$X)=each($Tf)){foreach($X
as$x=>$W){unset($Tf[$y][$x]);if(is_array($W)){$Tf[$y][stripslashes($x)]=$W;$Tf[]=&$Tf[$y][stripslashes($x)];}else$Tf[$y][stripslashes($x)]=($Pc?$W:stripslashes($W));}}}}function
fun_adm_bracket_escape($s,$Ga=false){static$Zh=array(':'=>':1',']'=>':2','['=>':3');return
strtr($s,($Ga?array_flip($Zh):$Zh));}function
fun_adm_charset($g){return(version_compare($g->server_info,'5.5.3')>=0?'utf8mb4':'utf8');}function
fun_adm_h($Q){return
str_replace("\0",'&#0;',htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function
fun_adm_nbsp($Q){return(trim($Q)!=""?fun_adm_h($Q):"&nbsp;");}function
fun_adm_checkbox($E,$Y,$Xa,$Sd="",$df="",$ab=""){$K="<input type='checkbox' name='$E' value='".fun_adm_h($Y)."'".($Xa?" checked":"").($df?' onclick="'.fun_adm_h($df).'"':'').">";return($Sd!=""||$ab?"<label".($ab?" class='$ab'":"").">$K".fun_adm_h($Sd)."</label>":$K);}function
fun_adm_optionlist($jf,$Qg=null,$yi=false){$K="";foreach($jf
as$x=>$W){$kf=array($x=>$W);if(is_array($W)){$K.='<optgroup label="'.fun_adm_h($x).'">';$kf=$W;}foreach($kf
as$y=>$X)$K.='<option'.($yi||is_string($y)?' value="'.fun_adm_h($y).'"':'').(($yi||is_string($y)?(string)$y:$X)===$Qg?' selected':'').'>'.fun_adm_h($X).'</option>';if(is_array($W))$K.='</optgroup>';}return$K;}function
fun_adm_html_select($E,$jf,$Y="",$cf=true){if($cf)return"<select name='".fun_adm_h($E)."'".(is_string($cf)?' onchange="'.fun_adm_h($cf).'"':"").">".fun_adm_optionlist($jf,$Y)."</select>";$K="";foreach($jf
as$y=>$X)$K.="<label><input type='radio' name='".fun_adm_h($E)."' value='".fun_adm_h($y)."'".($y==$Y?" checked":"").">".fun_adm_h($X)."</label>";return$K;}function
fun_adm_sel_input($Da,$jf,$Y="",$If=""){return($jf?"<select$Da><option value=''>$If".fun_adm_optionlist($jf,$Y,true)."</select>":"<input$Da size='10' value='".fun_adm_h($Y)."' placeholder='$If'>");}function
fun_adm_confirm(){return" onclick=\"return confirm('".fun_adm_lang(219)."');\"";}function
fun_adm_print_fieldset($pd,$ae,$Ii=false,$df=""){echo"<fieldset><legend><a href='#fieldset-$pd' onclick=\"".fun_adm_h($df)."return !toggle('fieldset-$pd');\">$ae</a></legend><div id='fieldset-$pd'".($Ii?"":" class='hidden'").">\n";}function
fun_adm_bold($Na,$ab=""){return($Na?" class='active $ab'":($ab?" class='$ab'":""));}function
fun_adm_odd($K=' class="odd"'){static$r=0;if(!$K)$r=-1;return($r++%2?$K:'');}function
fun_adm_js_escape($Q){return
addcslashes($Q,"\r\n'\\/");}function
fun_adm_json_row($y,$X=null){static$Qc=true;if($Qc)echo"{";if($y!=""){echo($Qc?"":",")."\n\t\"".addcslashes($y,"\r\n\"\\/").'": '.($X!==null?'"'.addcslashes($X,"\r\n\"\\/").'"':'undefined');$Qc=false;}else{echo"\n}\n";$Qc=true;}}function
fun_adm_ini_bool($xd){$X=ini_get($xd);return(preg_match('~^(on|true|yes)$~i',$X)||(int)$X);}function
fun_adm_q($Q){global$g;return$g->quote($Q);}function
fun_adm_get_vals($I,$e=0){global$g;$K=array();$J=$g->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$e];}return$K;}function
fun_adm_get_key_vals($I,$h=null,$Lh=0){global$g;if(!is_object($h))$h=$g;$K=array();$h->timeout=$Lh;$J=$h->query($I);$h->timeout=0;if(is_object($J)){while($L=$J->fetch_row()){if($L)$K[$L[0]]=fun_adm__($L[1]);}}return$K;}function
fun_adm_get_rows($I,$h=null,$l="<p class='error'>"){global$g;$pb=(is_object($h)?$h:$g);$K=array();$J=$pb->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($h)&&$l&&defined("PAGE_HEADER"))echo$l.fun_adm_error()."\n";return$K;}function
fun_adm_unique_array($L,$u){foreach($u
as$t){if(preg_match("~PRIMARY|UNIQUE~",$t["type"])){$K=array();foreach($t["columns"]as$y){if(!isset($L[$y]))continue
2;$K[$y]=$L[$y];}return$K;}}}function
fun_adm_escape_key($y){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(fun_adm_idf_escape("_"))).')([ \w)]+)$)',$y,$B))return$B[1].fun_adm_idf_escape(fun_adm_idf_unescape($B[2])).$B[3];return
fun_adm_idf_escape($y);}function
fun_adm_where($Z,$n=array()){global$g,$w;$K=array();foreach((array)$Z["where"]as$y=>$X){$y=fun_adm_bracket_escape($y,1);$e=fun_adm_escape_key($y);$K[]=$e.(($w=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$X))||$w=="mssql"?" LIKE ".fun_adm_q(addcslashes($X,"%_\\")):" = ".fun_adm_unconvert_field($n[$y],fun_adm_q($X)));if($w=="sql"&&preg_match('~char|text~',$n[$y]["type"])&&preg_match("~[^ -@]~",$X))$K[]="$e = ".fun_adm_q($X)." COLLATE ".fun_adm_charset($g)."_bin";}foreach((array)$Z["null"]as$y)$K[]=fun_adm_escape_key($y)." IS NULL";return
implode(" AND ",$K);}function
fun_adm_where_check($X,$n=array()){parse_str($X,$Wa);fun_adm_remove_slashes(array(&$Wa));return
fun_adm_where($Wa,$n);}function
fun_adm_where_link($r,$e,$Y,$ff="="){return"&where%5B$r%5D%5Bcol%5D=".urlencode($e)."&where%5B$r%5D%5Bop%5D=".urlencode(($Y!==null?$ff:"IS NULL"))."&where%5B$r%5D%5Bval%5D=".urlencode($Y);}function
fun_adm_convert_fields($f,$n,$N=array()){$K="";foreach($f
as$y=>$X){if($N&&!in_array(fun_adm_idf_escape($y),$N))continue;$Aa=fun_adm_convert_field($n[$y]);if($Aa)$K.=", $Aa AS ".fun_adm_idf_escape($y);}return$K;}function
fun_adm_get_session($y,$V='string'){$K='';if(isset($_SESSION[ADM_USER_SID][$y])){if($y==='password')$K=fun_adm_authcode($_SESSION[ADM_USER_SID][$y],'DECODE');else$K=$_SESSION[ADM_USER_SID][$y];}if($V!=='string'&&!is_array($K))$K=array();return$K;}function
fun_adm_un_session($y){if(isset($_SESSION[ADM_USER_SID][$y]))unset($_SESSION[ADM_USER_SID][$y]);if(isset($_SESSION[ADM_USER_SID][$y]))return
false;else
return
true;}function
fun_adm_set_session($y,$X){if($X===null||$X===false){if(isset($_SESSION[ADM_USER_SID][$y]))unset($_SESSION[ADM_USER_SID][$y]);}else{if($y==='password')$X=fun_adm_authcode($X);$_SESSION[ADM_USER_SID][$y]=$X;}return$X;}function
fun_adm_is_ajax(){return(isset($_SERVER['HTTP_X_REQUESTED_WITH'])&&$_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest');}function
fun_adm_redirect($A,$D=null){if(fun_adm_is_ajax())exit('<div class="message"><b>'.$D.$gh.'</b></div>');if($D)fun_adm_set_session('show_msg',$D);if(!$A)$A=ADM_ME;$A=rtrim($A,'?&');header("Location: $A");exit();}function
fun_adm_query_redirect($I,$A,$D,$kg=true,$yc=true,$Fc=false,$Kh=""){global$g,$l,$c;if($yc){$ih=microtime(true);$Fc=!$g->query($I);$Kh=fun_adm_format_time($ih);}$gh='';if($I)$gh=$c->messageQuery($I,$Kh);if($Fc){$l=fun_adm_error().$gh;return
false;}if($kg)fun_adm_redirect($A,$D.$gh);if($D)fun_adm_set_session('show_msg',$D);return
true;}function
fun_adm_queries($I){global$g;static$Wf=array();static$ih;if(!$ih)$ih=microtime(true);if($I===null)return
array(implode("\n",$Wf),fun_adm_format_time($ih));$Wf[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$g->query($I);}function
fun_adm_apply_queries($I,$T,$uc='fun_adm_table'){foreach($T
as$R){if(!fun_adm_queries("$I ".$uc($R)))return
false;}return
true;}function
fun_adm_queries_redirect($A,$D,$kg){list($Wf,$Kh)=fun_adm_queries(null);return
fun_adm_query_redirect($Wf,$A,$D,$kg,false,!$kg,$Kh);}function
fun_adm_format_time($ih){return
fun_adm_lang(220,max(0,microtime(true)-$ih));}function
fun_adm_remove_from_uri($xf=""){return
substr(preg_replace("~(?<=[?&])($xf".")=[^&]*&~",'',"{$_SERVER['REQUEST_URI']}&"),0,-1);}function
fun_adm_pagination($G,$Bb){return' '.($G==$Bb?$G+1:'<a href="'.fun_adm_h(fun_adm_remove_from_uri('page').(true?"&page=$G".($_GET['next']?"&next=".urlencode($_GET['next']):''):'')).'">'.($G+1).'</a>');}function
fun_adm_get_file($y,$Mb=false){$o=$_FILES[$y];if(!$o)return
null;foreach($o
as$y=>$X)$o[$y]=(array)$X;$K='';foreach($o["error"]as$y=>$l){if($l)return$l;$E=$o["name"][$y];$Wh=$o["tmp_name"][$y];$qb=file_get_contents($Mb&&preg_match('~\\.gz$~',$E)?"compress.zlib://$Wh":$Wh);if($Mb){$ih=substr($qb,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$ih,$qg))$qb=iconv("utf-16","utf-8",$qb);elseif($ih=="\xEF\xBB\xBF")$qb=substr($qb,3);$K.=$qb."\n\n";}else$K.=$qb;}return$K;}function
fun_adm_upload_error($l){$se=($l==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($l?fun_adm_lang(221).($se?" ".fun_adm_lang(222,$se):""):fun_adm_lang(65));}function
fun_adm_repeat_pattern($Gf,$ce){return
str_repeat("$Gf{0,65535}",$ce/65535)."$Gf{0,".($ce%65535)."}";}function
fun_adm_is_utf8($X){return(preg_match('~~u',$X)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$X));}function
fun_adm_shorten_utf8($Q,$ce=80,$ph=""){if(!preg_match("(^(".fun_adm_repeat_pattern("[\t\r\n -\x{FFFF}]",$ce).")($)?)u",$Q,$B))preg_match("(^(".fun_adm_repeat_pattern("[\t\r\n -~]",$ce).")($)?)",$Q,$B);return
fun_adm_h($B[1]).$ph.(isset($B[2])?"":"<i>...</i>");}function
fun_adm_format_number($X){return
strtr(number_format($X,0,".",fun_adm_lang(223)),preg_split('~~u',fun_adm_lang(224),-1,PREG_SPLIT_NO_EMPTY));}function
fun_adm_friendly_url($X){return
preg_replace('~[^a-z0-9_]~i','-',$X);}function
fun_adm_hidden_fields($Tf,$rd=array()){while(list($y,$X)=each($Tf)){if(!in_array($y,$rd)){if(is_array($X)){foreach($X
as$x=>$W)$Tf[$y."[$x]"]=$W;}else
echo'<input type="hidden" name="'.fun_adm_h($y).'" value="'.fun_adm_h($X).'">';}}}function
fun_adm_hidden_fields_get(){global$eg;if($eg){parse_str($eg,$Ae);foreach($Ae
AS$y=>$X)echo'<input type="hidden" name="'.$y.'" value="'.fun_adm_h($X).'">'."\n";}}function
fun_adm_table_status1($R,$Gc=false){$K=fun_adm_table_status($R,$Gc);return($K?$K:array("Name"=>$R));}function
fun_adm_column_foreign_keys($R){global$c;$K=array();foreach($c->foreignKeys($R)as$p){foreach($p["source"]as$X)$K[$X][]=$p;}return$K;}function
fun_adm_enum_input($V,$Da,$m,$Y,$lc=null){global$c;preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$C);$K=($lc!==null?"<label><input type='$V'$Da value='$lc'".((is_array($Y)?in_array($lc,$Y):$Y===0)?" checked":"")."><i>".fun_adm_lang(225)."</i></label>":"");foreach($C[1]as$r=>$X){$X=stripcslashes(str_replace("''","'",$X));$Xa=(is_int($Y)?$Y==$r+1:(is_array($Y)?in_array($r+1,$Y):$Y===$X));$K.=" <label><input type='$V'$Da value='".($r+1)."'".($Xa?' checked':'').'>'.fun_adm_h($c->editVal($X,$m)).'</label>';}return$K;}function
fun_adm_input($m,$Y,$q){global$g,$ii,$c,$w;$E=fun_adm_h(fun_adm_bracket_escape($m["field"]));echo"<td class='function'>";if(is_array($Y)&&!$q){$ya=array($Y);if(version_compare(PHP_VERSION,5.4)>=0)$ya[]=JSON_PRETTY_PRINT;$Y=call_user_func_array('json_encode',$ya);$q="json";}$sg=($w=="mssql"&&$m["auto_increment"]);if($sg&&!$_POST["save"])$q=null;$bd=(isset($_GET["select"])||$sg?array("orig"=>fun_adm_lang(226)):array())+$c->editFunctions($m);$Da=" name='fields[$E]'";if($m["type"]=="enum")echo
fun_adm_nbsp($bd[""])."<td>".$c->editInput($_GET["edit"],$m,$Da,$Y);else{$Qc=0;foreach($bd
as$y=>$X){if($y===""||!$X)break;$Qc++;}$cf=($Qc?" onchange=\"var f = this.form['function[".fun_adm_h(fun_adm_js_escape(fun_adm_bracket_escape($m["field"])))."]']; if ($Qc > f.selectedIndex) f.selectedIndex = $Qc;\" onkeyup='keyupChange.call(this);'":"");$Da.=$cf;$jd=(in_array($q,$bd)||isset($bd[$q]));echo(count($bd)>1?"<select name='function[$E]' onchange='functionChange(this);'".fun_adm_on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".fun_adm_optionlist($bd,$q===null||$jd?$q:"")."</select>":fun_adm_nbsp(reset($bd))).'<td>';$zd=$c->editInput($_GET["edit"],$m,$Da,$Y);if($zd!="")echo$zd;elseif($m["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$m["length"],$C);foreach($C[1]as$r=>$X){$X=stripcslashes(str_replace("''","'",$X));$Xa=(is_int($Y)?($Y>>$r)&1:in_array($X,explode(",",$Y),true));echo" <label><input type='checkbox' name='fields[$E][$r]' value='".(1<<$r)."'".($Xa?' checked':'')."$cf>".fun_adm_h($c->editVal($X,$m)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$m["type"])&&fun_adm_ini_bool("file_uploads"))echo"<input type='file' name='fields-$E'$cf>";elseif(($Gh=preg_match('~text|lob~',$m["type"]))||preg_match("~\n~",$Y)){if($Gh&&$w!="sqlite")$Da.=" cols='50' rows='12'";else{$M=min(12,substr_count($Y,"\n")+1);$Da.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$Da>".fun_adm_h($Y).'</textarea>';}elseif($q=="json")echo"<textarea$Da cols='50' rows='12' class='jush-js'>".fun_adm_h($Y).'</textarea>';else{$te=(!preg_match('~int~',$m["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$m["length"],$B)?((preg_match("~binary~",$m["type"])?2:1)*$B[1]+($B[3]?1:0)+($B[2]&&!$m["unsigned"]?1:0)):($ii[$m["type"]]?$ii[$m["type"]]+($m["unsigned"]?0:1):0));if($w=='sql'&&$g->server_info>=5.6&&preg_match('~time~',$m["type"]))$te+=7;echo"<input".((!$jd||$q==="")&&preg_match('~(?<!o)int~',$m["type"])?" type='number'":"")." value='".fun_adm_h($Y)."'".($te?" maxlength='$te'":"").(preg_match('~char|binary~',$m["type"])&&$te>20?" size='40'":"")."$Da>";}}}function
fun_adm_process_input($m){global$c;$s=fun_adm_bracket_escape($m["field"]);$q=$_POST["function"][$s];$Y=$_POST["fields"][$s];if($m["type"]=="enum"){if($Y==-1)return
false;if($Y=="")return"NULL";return+$Y;}if($m["auto_increment"]&&$Y=="")return
null;if($q=="orig")return($m["on_update"]=="CURRENT_TIMESTAMP"?fun_adm_idf_escape($m["field"]):false);if($q=="NULL")return"NULL";if($m["type"]=="set")return
array_sum((array)$Y);if($q=="json"){$q="";$Y=json_decode($Y,true);if(!is_array($Y))return
false;return$Y;}if(preg_match('~blob|bytea|raw|file~',$m["type"])&&fun_adm_ini_bool("file_uploads")){$o=fun_adm_get_file("fields-$s");if(!is_string($o))return
false;return
fun_adm_q($o);}return$c->processInput($m,$Y,$q);}function
fun_adm_search_tables(){global$c,$g;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$Xc=false;foreach(fun_adm_table_status('',true)as$R=>$S){$E=$c->tableName($S);if(isset($S["Engine"])&&$E!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$J=$g->query("SELECT".fun_adm_limit("1 FROM ".fun_adm_table($R)," WHERE ".implode(" AND ",$c->selectSearchProcess(fun_adm_fields($R),array())),1));if(!$J||$J->fetch_row()){if(!$Xc){echo"<ul>\n";$Xc=true;}echo"<li>".($J?"<a href='".fun_adm_h(ADM_ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$E</a>\n":"$E: <span class='error'>".fun_adm_error()."</span>\n");}}}echo($Xc?"</ul>":"<p class='message'>".fun_adm_lang(71))."\n";}function
fun_adm_dump_headers($qd,$De=false){global$c;$K=$c->dumpHeaders($qd,$De);$vf=$_POST["output"];if($vf!='text')header("Content-Disposition: attachment; filename=".$c->dumpFilename($qd).'_'.date('Ymd_H:i:s').".$K".($vf!="file"&&!preg_match('~[^0-9a-z]~',$vf)?".$vf":""));return$K;}function
fun_adm_dump_csv($L){foreach($L
as$y=>$X){if(preg_match("~[\"\n,;\t]~",$X)||$X==="")$L[$y]='"'.str_replace('"','""',$X).'"';}echo
implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function
fun_adm_apply_sql_function($q,$e){return($q?($q=="unixepoch"?"DATETIME($e, '$q')":($q=="count distinct"?"COUNT(DISTINCT ":strtoupper("$q("))."$e)"):$e);}function
fun_adm_select_value($X,$_,$m,$Hh){global$c,$ba;if(is_array($X)){$K="";foreach($X
as$x=>$W)$K.="<tr>".($X!=array_values($X)?"<th>".fun_adm_h($x):"")."<td>".fun_adm_select_value($W,$_,$m,$Hh);return"<table cellspacing='0'>$K</table>";}if(!$_)$_=$c->selectLink($X,$m);if($_===null){if(fun_adm_is_mail($X))$_="mailto:$X";if($Vf=fun_adm_is_url($X))$_=(($Vf=="http"&&$ba)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$X:"$Vf://www.adminer.org/redirect/?url=".urlencode($X));}$K=$c->editVal($X,$m);if($K!==null){if($K==="")$K="&nbsp;";elseif(!fun_adm_is_utf8($K))$K="\0";elseif($Hh!=""&&fun_adm_is_shortable($m))$K=fun_adm_shorten_utf8($K,max(0,+$Hh));else$K=fun_adm_h($K);}return$c->selectVal($K,$_,$m,$X);}function
fun_adm_is_mail($ic){$Ca='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$Vb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$Gf="$Ca+(\\.$Ca+)*@($Vb?\\.)+$Vb";return
is_string($ic)&&preg_match("(^$Gf(,\\s*$Gf)*\$)i",$ic);}function
fun_adm_is_url($Q){$Vb='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($Vb?\\.)+$Vb(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q,$B)?strtolower($B[1]):"");}function
fun_adm_is_shortable($m){return
preg_match('~char|text|lob|geometry|point|linestring|polygon|string~',$m["type"]);}function
fun_adm_count_rows($R,$Z,$Cd,$fd){global$w;$I=" FROM ".fun_adm_table($R).($Z?" WHERE ".implode(" AND ",$Z):"");return($Cd&&($w=="sql"||count($fd)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$fd).")$I":"SELECT COUNT(*)".($Cd?" FROM (SELECT 1$I$gd) x":$I));}function
fun_adm_slow_query($I){global$c,$U;$k=$c->database();$Lh=$c->queryTimeout();$h=null;$K=fun_adm_get_key_vals($I,$h,$Lh);return
array_keys($K);}function
fun_adm_get_token(){$hg=rand(1,1e6);return($hg^fun_adm_get_session('token')).":$hg";}function
fun_adm_verify_token(){list($U,$hg)=explode(":",$_POST['token']);$Oa=($hg^fun_adm_get_session('token'))==$U;return$Oa;}function
fun_adm_lzw_decompress($Ka){return
gzuncompress(fun_adm_hexXbin($Ka));}function
fun_adm_on_help($ib,$ah=0){return" onmouseover='helpMouseover(this, event, ".fun_adm_h($ib).", $ah);' onmouseout='helpMouseout(this, event);'";}function
fun_adm_edit_form($b,$n,$L,$ri){global$c,$w,$U,$l;$vh=$c->tableName(fun_adm_table_status1($b,true));fun_adm_page_header($_POST['clone']?$_POST['clone']:($ri?fun_adm_lang(48):fun_adm_lang(227)),$l,array("select"=>array($b,$vh)),$vh);$S=fun_adm_table_status1($b);$c->selectLinks($S,'');if($L===false)echo"<p class='error'>".fun_adm_lang(175)."\n";echo'<form action="',ADM_THIS_URL,'" method="post" enctype="multipart/form-data" id="form">
';if(!$n)echo"<p class='error'>".fun_adm_lang(228)."\n";else{$xb=count($_POST['check']);if($xb>0||$_POST['all']){if($_POST['all']){$xb='ALL';$_POST['check']=array();}echo'<div class="message">'.fun_adm_lang(229).fun_adm_lang(37).fun_adm_lang(10).': '.$xb.', You are batch operation, please note</div>';}echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($n
as$E=>$m){echo"<tr><th>".$c->fieldName($m);$Ob=$_GET["set"][fun_adm_bracket_escape($E)];if($Ob===null){$Ob=$m["default"];if($m["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$Ob,$qg))$Ob=$qg[1];}$Y=($L!==null?($L[$E]!=""&&$w=="sql"&&preg_match("~enum|set~",$m["type"])?(is_array($L[$E])?array_sum($L[$E]):+$L[$E]):$L[$E]):(!$ri&&$m["auto_increment"]?"":(isset($_GET["select"])?false:$Ob)));if(!$_POST["save"]&&is_string($Y))$Y=$c->editVal($Y,$m);$q=($_POST["save"]?(string)$_POST["function"][$E]:($ri&&$m["on_update"]=="CURRENT_TIMESTAMP"?"now":($Y===false?null:($Y!==null?'':'NULL'))));if(preg_match("~time~",$m["type"])&&$Y=="CURRENT_TIMESTAMP"){$Y="";$q="now";}fun_adm_input($m,$Y,$q);echo"\n";}if(!fun_adm_support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".fun_adm_html_select("field_funs[]",$c->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($n){echo"<input type='submit' value='".fun_adm_lang(83)."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($ri?fun_adm_lang(230)."' onclick='return !ajaxForm(this.form, \"".fun_adm_lang(231).'...", this)':fun_adm_lang(232))."' title='Ctrl+Shift+Enter'>\n";}echo($ri?"<input type='submit' name='delete' value='".fun_adm_lang(187)."'".fun_adm_confirm().">\n":($_POST||!$n?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))fun_adm_hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));$og=fun_adm_get_session('referer');echo'<input type="hidden" name="referer" value="',fun_adm_h($og?$og:fun_adm__($_SERVER['HTTP_REFERER'])),'" />
<input type="hidden" name="save" value="1" />
<input type="hidden" name="token" value="',$U,'" />
</form>
';}function
fun_adm_authcode($Q,$ef='ENCODE'){$y=ADM_USER_SID;$y=md5($y);if($ef!=='ENCODE')$Q=fun_adm_hexXbin($Q);$Nd=strlen($y);$Q=$ef=='DECODE'?base64_decode($Q):substr(md5($Q.$y),0,8).$Q;$lh=strlen($Q);$wg=$Pa=array();$J='';for($r=0;$r<=255;$r++){$wg[$r]=ord($y[$r%$Nd]);$Pa[$r]=$r;}for($v=$r=0;$r<256;$r++){$v=($v+$Pa[$r]+$wg[$r])%256;$Th=$Pa[$r];$Pa[$r]=$Pa[$v];$Pa[$v]=$Th;}for($la=$v=$r=0;$r<$lh;$r++){$la=($la+1)%256;$v=($v+$Pa[$la])%256;$Th=$Pa[$la];$Pa[$la]=$Pa[$v];$Pa[$v]=$Th;$J.=chr(ord($Q[$r])^($Pa[($Pa[$la]+$Pa[$v])%256]));}if($ef==='DECODE'){if(substr($J,0,8)==substr(md5(substr($J,8).$y),0,8))return
substr($J,8);else
return'';}else
return
bin2hex(str_replace('=','',base64_encode($J)));}function
fun_adm_infolist(){$vd=unserialize(fun_adm_lzw_decompress('78dacd596b531bd719feceaf3851eb90786449801d270bc89334cd4ca6d36966d26f2ec32cda0509a45d65b58ab03b9d91ccdd5c84879bc102830d32c646c28580d005cdf4af74cf5efe45df73ce4a5a04a26eda0fc596ad3d7bdedb796fcf7be0b94e1ff7d718f715e7e2a3a1fe0e9fcfd7e1ea8e71777d9c0b979fe042c15a5e37f379b7715c324a2ff5b56dfd78455fd8d3974ff5c35d7d695eab64c87e07fd3df2dc010b78721d4fece99b63d6faa25698374f8f3f69dada59db6a549e19a58c5698352b1526b0796b17ddda055c274e716eecfa4d77c973d75dcea5bf38d1578ff4e945fcf4a5db5838c2997d7c34694e1de0a7fb78fa0cde919df719653418a5cc3bee02ab9e07f0d886100a4981705c10fb6529207ed6ce0b9190242a310f2c7b6047fbe7dd6413f9fc16dea15e248909f4b5bdeb33f696bcb9e30fc8d260bfa0847e1615d8d61e7914fb29dcde8dd88fd78bacb71f402b37b24acfcddcae5628d21dcdf4034139a612fa8ecefb1e1ffce9a03c805e2b94f44c3114d5a757cde404ce1ce1cda4db7897c7e9d738fb048d8e8e725d5dbe2fae3094f88858574818b0550286faca913e9fc3c525f27771de7385321e63a628b2acd62d2194c6f2be3e7d06345748a27c2c562321df191990e0fca4b19dbab23f2c074660bfaac4c5ba809a7acff378316b2da7403d3357b5d6720fae90476481da1615e4868284d8ac6e91e85d3dc7e5b4d38136655c09ff1417954740caf70e7c1ae815ea8a6ad54d6365ddd818873d38fd040ea999381612c4015ee90f84e59878497962e7c4b1b57688cfb2e6c5b9be9d6e220df3d210d177986fbf62eedc14ce6d3043cdfca1b99f6ca20dc0c9125af83fcaab416768e1a7db90505a21a9150ef0eeaa35b64f375f317b982c12f197395ccf826ebee6ec027c383cc00746fa07e352800516f9d6de5d37c2e6f262cb3c1ac3531538c266c78903f1a1ebdc4e352927f1621e48cdfc8abebf633bd041ad46a24288066680fb0b3cd4ec68926f9497f0e173f32c8f2fc6af3183b8a29f44f8c376dba1ed7d8467581c54a96781add39fdac51b080a3d9d36ab4797d92971090a016af5639bf466d6ac2e9a3b7384ce51ce4292208ed27276ff3ed4a91e21f4330a09bd2ee0dc0fef5dfe9e60178aa98fc262af2bc22b4321e98e2a4739e48b8e76bbfc0f8ddda27631db677c284136f678835d7ec2c1df33282b117f5b8f2a8eaabc22f2083e822c851ff5ba5c356e8990a0063974ff2bc20a05c5d05050e550a78f71be15ebf1d6a8fd3d21291a5791fa280a74c1902088920b79fd3d5e2aa6c74b450e2864e9466dada979339beac31fb6f4e41ba6adca0f8445140843ade875497242e1a360b3aac027d8a469a7efd62de0427ad5549a9aab06c9363f4ee7ade40c4e966b2b4d84f73a29a1993fd19f2fb03d5e2a817c0467e1867581ae3da4d5d20d9f902af6d597c9396fcde2f28abeb4d028e41cddcc365d654c2b7a8331543c3e4c96dca85ee2dd50af32c6fe2c2bea0d717a661e3fddc1ebfb76b5074371216bd7fcf4d9eddbb4e27b1c9a347852266dd7e94382bea18f799205565a75474fe51b926f235c9db0764a2d8d22c5bd9909abf1ff0113d29a1a4c9afa11e34332881ec5e1ae35316f5472a4bfe72ee00b33ba4ee4d64a7b56728da8313d696d2cebcb797d2e8577a11a1cb45480f48f8602d045dc922c39fccd443a9b89a37f93ed88e1258638b4f286fe3aa9ff32cb64138716b32d6593d6d7904d4aa17b900fc7ae48c78b0b60b3569a00efb3f6f075ffb7df905a5433dd1100948343a497e617494bff439626ff97d957ebc78df38015649496f4ad717cb866bccf3a926266169fedd9959e366bd6a6c117b4187228ca2b7caf2046e44ff948b49b1f127b3b7c90626f5ee3c9e37a57c7937f370e52709ad6abe72d7c74a9d17f8cab1864612d03fa0583006edae6c0376cddddda594ed9a43d35448a925b10ddc3bcfb71d0fd38e1380b7a0ac6ca9cb5f98a818606bbb64bfc02ce7425e8405f9dd24aa71046ac43367842e7057cc730c0ef7efc91ed6ba1e5b083e9f047f21c8eddc89262839b0fdb3e66074e00f86f8e551e7cdcd132fcd010c180024e3f65d5de36e2450e57561c959f3e6b85434872883a42902fe3a922441d257723466d1ccedc685e1d7634e4e3c909123b1459388c5c39324ae30c00b9112419ad6f1b6675caacaee3f12a8b387893db82c18751937168f9dc03a19e62b9d042894b10cea108c56af5d24bb558db367345982fb4ca0a7b6d8d55e008cc57ef984fcd5fcef4cd3d3782faa495b7610ed48a9336fe9b9bd04f7fd167927a6686b517080c967bad0a546e064fecf7998759fceca9569cb576ceff6d991250400e039c957a5d5d75684380cb1d3e1c1a923802e7a0fa505c65bf0dc3ec76a78e77ba2834216da683435ffff0bdf56212e64976ee768b799ed73349a69c1b917198be8429d6c8a6f4c3576c4cd64a2538236b730b78a01ffef4e39fc95126cb1e868b08ff4ece4e1038610824fb7c3233880c9b888d75c88358bd23270d7576f78d565ce8d0d74ec1d1d9271ce26b83a91bd547d540942d800b600207f1a0100004ad5205ff34c47781f8f51c8410539ff264315b3793451923046741cd4ccec1104e12dad1e0490400d420231e082d14c1e3b5c3c1a5a299cb69d51c09431b113274e8284b4e97b3e4e923c066729de5d87fed72141025555488576fc5508b586337077d38b36f14ab787eca28be4136ccb585c6a381a018187121590a8443811186c9edd5cfd46028e66ebf156bbfee9fcf5d36568ec5072221d5857ee6c3717884c4b096734c1a03d0ff33536980db3c22b1a16b37d35c4097c3bf8ef6eb71427e8ce5972409d64eadb5138e9c2204223e4ad3af7ff806fdf1db7bf4abed61a2604d1ee82b2b1cfa8dcff7a5efbbef0860d89d027800e049df99e6500fdfb471481145a9db85828a3808b385aa4639af3791487806458997144f408e78e98c4462fc013fcc8ff6c6e4b81210fb05392185655ef87410e6a58eafbe74f9d9bd125e9835ca6f21bb7abcbc1f4278ea00a62efd45559f7f65a75f6e8e18470300f23993245748f4899529337fc670d6af549728e91d8e47a25e38ea91fe8e2f3c4135128690808148547b5dfd03d004465c7e6be902329568d9e32547e84c95b6cb11eb9cb05a56b24eea4a00dd14e041918194847e4b90c7511ad20b5a151d13f15c112032f3285966490b290ff32603b9ac0278c07a66e7ad18f8915ea7516da91e6db7512d6a9cea39eedb043942efdbee71ae7a51020fe83bafc9f2976c931c855992eceae45cf8c30a34757d6d0f57d7c8da171c24a1c0ab627d83235bed193a20471f29e400c873a78f73a17fbc45609e567c072851ab64706e17d9f2064551206d8f928292acd4330808ed5f1f4f43e3c4e9792b3bcd7c4303a0c96d37b9dee5ffaefe9d9c14d5db470d4df08a149286a868b084d56a72e0f458d8edcb27d0b8c7f1f43aadf4bfbe55d46e17e26ab03f240dca4c8b2e30b88d4e53b59b4f7a61f2fe95595d60feaedd6a825f6bafd909819adaf92c9943687f30736fb5ca36cd9873eda20ac349ad1519c56340000971808e3ed0210f69db1242b140fcb11b81dc04e432ac2d8e43286ae59456d82057c2ef2036039118602740c7631526c600010b7b8c259e38056635ad8c4c0a2f94f0f93118ab4f3fd34aefad4cd2cca608c4a41d0a1089b15e825e62e4768cc5493a9e4313b38a25632cebb1ad22131454a5e315edfc25f43ee8dc30db309308de3a008666ee48aba46d3893db024085e78f413b0f435704161566b9b6da4ddbc7dd25b7b8486ebe34b2e5cdad42893ade87d8ac27aca7cee5e64b63af97812f7b8c64556113a26a8f5211fcbc7b720db36baf7dbdde4b97bead6f7d1d148d3b5fd44c531bf8d0e51b58aff7eaf5ab83f4e69b361048efd958de37c49238a647c0ca3b2b7778fa2d18f4fdb7bf37caabe6c533bcbe4f6ff716c1b36c9880f836ab1356f2250b098f9d75807af599253c7fa4af9c904b46a8a8f4606b92f0d107082680e8daf9b4914be2f915406af53487e8a1cd077cfae204ef6e1099ec0dccb2e7332cf0f5977b4666961663522c3df55ca561c02196ad0cbab1ab288ae5ec9c2b6fe07c499fb96051eb187808faa65218ccf2d8959a0e24c37cadc442f5d533efcd83ad7fa672ce1d8f83b51d60955659827404f52eed48d4779ca7ac77cb8d1da4043275fb4545a13450da6d30c97ec1632351c4ec618094059c9bed6b204e3bd7a911ec974e1c2df0f7689d9547ea96b0ab98c3d790d68d8693506c155afee6ea6fff02076e4f9a'));return$vd;}function
fun_adm_page_header($Oh,$l="",$Qa=array(),$Ph=""){global$a,$c,$w,$ha,$U;$F=fun_adm_object();fun_adm_page_headers();if(fun_adm_is_ajax()&&$l){fun_adm_page_messages($l);exit();}$Qh=$Oh.($Ph!=""?": $Ph":"");$Rh=strip_tags($Qh.($F->conf_dbhost!=''&&$F->conf_dbhost!='localhost'?fun_adm_h(" - ".$F->conf_dbhost):'').' - '.$c->name());echo'<!DOCTYPE html>
<html lang="',$a,'" dir="',fun_adm_lang(233),'">
<head>
<meta charset="utf-8" />
<meta name="robots" content="noindex" />
<meta name="referrer" content="origin-when-crossorigin" />
<title>',$Rh,'</title>
<link rel="stylesheet" type="text/css" href="',fun_adm_incl('default.css'),'" />
<script type="text/javascript" src="',fun_adm_incl('functions.js'),'"></script>
<script type="text/javascript" src="',fun_adm_incl('jquery-min.js'),'"></script>
<script type="text/javascript" src="',fun_adm_incl('adminers.js'),'"></script>
';if($c->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',fun_adm_incl('favicon.ico'),'" />
<link rel="apple-touch-icon" href="',fun_adm_incl('favicon.ico'),'" />
';}echo'<style type="text/css">
';if(!$c->isUser()){echo'    #index_show{overflow: hidden; padding: 3px; padding-left: 0px;}
    #content{padding: 0px; margin-top: 166px; height: auto; background:url(\'',fun_adm_incl('wap_page_bg.png'),'\');}
    #userlogin{padding: 0px; margin: 0;border-collapse: collapse; width: 100%; border: none; }
    #userlogin td{padding: 6px; border: none; padding-left: 0px;}
    .leftinfo{margin-top: 128px;}
    body{background:url(\'',fun_adm_incl('wap_page_bg.png'),'\'); margin: 0; padding: 0; width: 100%; height: 100%;}
';}else
if($_SERVER['VAR']['is_sidebar']!=='true'){echo'    #menu{display: none;}
    #content{margin-left: 6px;}
    #breadcrumb p.menu_right{margin-left:0px;}
    #msg_debug{margin-left: 6px;}
';}echo'</style>
',fun_adm_jscss(),'</head>
<body class="',fun_adm_lang(233);?> nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);">
<script type="text/javascript">
    document.body.className = document.body.className.replace(/ nojs/, ' js');
    var is_sidebar = ('<?php echo$_SERVER['VAR']['is_sidebar'];?>' == 'true'? true:false);
    var this_url = '<?php echo
ADM_ME,'\';
    var version = \'',$ha,'\';
</script>
<div id="help" class="jush-',$w,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
<div id="content">
';if($Qa!==null){echo'<div id="breadcrumb">';$_=ADM_URL;$Vg=($F->conf_dbhost!=''?fun_adm_h($F->conf_dbhost):fun_adm_lang(47));echo'<p class="menu_right">'.$F->def_lang_in('sidebar').'</p>','<p class="menu_left">';if($Qa===false)echo" <a href='".($_?fun_adm_h($_):".")."' title='$Vg'>$Vg</a>";else{echo" <a href='".($_?fun_adm_h($_):".")."' title='$Vg'>$Vg</a> &raquo; ";if($_GET['ns']||(ADM_DB&&is_array($Qa)))echo'<a href="'.fun_adm_h($_."db=".urlencode(ADM_DB).(fun_adm_support("scheme")?"&ns=":"")).'">'.fun_adm_h(ADM_DB).'</a> &raquo; ';if(is_array($Qa)){if($_GET['ns'])echo'<a href="'.fun_adm_h(substr(ADM_ME,0,-1)).'">'.fun_adm_h($_GET['ns']).'</a> &raquo; ';foreach($Qa
as$y=>$X){$Qb=(is_array($X)?$X[1]:fun_adm_h($X));if($Qb!="")echo"<a href='".fun_adm_h(ADM_ME."$y=").urlencode(is_array($X)?$X[0]:$X)."'>$Qb</a> &raquo; ";}}if($Oh)echo'<a href="'.ADM_THIS_URL.'">'.$Oh.'</a>';}$sh=fun_adm_get_databases(true);echo'</p><form style="float: right; padding: 0px; margin: 0px; margin-right: 6px;" action="" class="menu_right_logout" enctype="application/x-www-form-urlencoded" method="post">
            <input type="submit" name="logout" title="',fun_adm_lang(234),'" value=" " id="logout" />
            <input type="hidden" name="token" value="',fun_adm_get_session('token'),'" />
       </form>
       
        ';if(ADM_DB){$zh=fun_adm_tables_list();echo'        <form style="float: right; padding: 0px; margin: 0px; margin-right: 6px;" action="" class="menu_right_logout" enctype="application/x-www-form-urlencoded" method="post">
        <select name="tables" onchange="adm_table_link(\'',ADM_ME,'\', this.value)" style="border: none;">
       
        ';if(!$_GET['select'])echo'<option value="">'.fun_adm_lang(235).fun_adm_lang(37).fun_adm_lang(10).'</option>';foreach($zh
AS$x=>$W){$kh='';if($x===$_GET['select'])$kh=' selected="selected" ';echo"<option {$kh} value=\"{$x}\">{$x}</option>";}echo'        </select>
        </form>';}?><form style="float: right; padding: 0px; margin: 0px; margin-right: 6px;" action="" class="menu_right_logout" enctype="application/x-www-form-urlencoded" method="post"><select name="db" onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);' style="border: none;"><option selected="" value=""><?php echo
fun_adm_lang(235).fun_adm_lang(33),'</option>
        ';foreach($sh
AS$x=>$W){$kh='';if($W===ADM_DB)$kh=' selected="selected" ';echo"<option {$kh} value=\"{$W}\">{$W}</option>";}?><input type='hidden' value='<?php echo$U,'\' name="token" /></select></form><span class="clear"></span></div> <!--breadcrumb--> 
';}if($c->isUser())echo"<h2>$Qh</h2>\n";echo"<div id='ajaxstatus' class='jsonly hidden'></div>\n";fun_adm_page_messages($l);}function
fun_adm_page_headers(){header('Content-Type: text/html; charset=utf-8');header('Cache-Control: no-cache');}function
fun_adm_page_messages($l){$ze=fun_adm_get_session('show_msg');if($ze)fun_adm_un_session('show_msg');if(!$l&&$ze)echo"<div class=\"message\">".$ze."</div>\n";else{if($l){if(!is_string($l))$l=json_encode((array)$l);echo"<div class=\"error\">$l</div>\n";}}}function
fun_adm_page_footer($Be=''){global$c,$U,$pa;echo'</div>

<div id="menu">
    <div class="leftinfo">
    ';$c->navigation($Be);$ke=fun_adm_get_session('Longin_Info');if($ke)$ke=explode('~',$ke);else$ke=array(0=>'mysql',1=>'localhost',2=>'pdo');if(!$c->isUser()){$ie=((boolean)fun_adm_get_session('adm_logout'))?'<input name="login_api" type="submit" value="'.fun_adm_lang(236).'" />':'';echo'    <form enctype="application/x-www-form-urlencoded" action="" method="post">
    <table id="userlogin">
    <tr><td>',fun_adm_lang(237),'</td><td>
    <select name="driver" onchange="driver_onchange(this)">
    ';foreach($_SERVER['STYPE']AS$x=>$W){$Og=(($ke[0]===$x)?' selected="selected"':"");echo'<option value="'.$x.'"'.$Og.'>'.$W.'</option>';}if(ADM_IS_PDO){$ub=($ke[2]==='none'?' selected="selected"':'');$tb=($ke[2]==='pdo'?' selected="selected"':'');}echo'    </select>
    
    ';if(ADM_IS_PDO){echo'    <select name="contype">
        <option value="pdo"',$tb,'>PDO</option>
        <option value="none"',$ub,'>None</option>
    </select>
    ';}echo'    </td></tr>
    <tr><td>',fun_adm_lang(47),'</td><td><input name="server" title="hostname[:port]" value="',$ke[1],'" /></td></tr>
    <tr class="loghide"><td>',fun_adm_lang(46),'</td><td><input name="username" id="username" value="" /></td></tr>
    <tr class="loghide"><td>',fun_adm_lang(161);?></td><td><input onfocus="this.type='password'" name="password" /></td></tr>
    <tr>
        <td colspan="2"><input type='submit' value='<?php echo
fun_adm_lang(8),'\' /> ',$ie,'</td>
    </tr>
    </table>
    <input type="hidden" name="token" value="',$U;?>" />
    </form>
    <script type="text/javascript">
    var username = document.getElementById('username');
    focus(username);
    function driver_onchange(obj){
       if($(obj).val() == 'sqlite'){
          $('input[name="server"]').prop('disabled',true);
       }else{
          $('input[name="server"]').prop('disabled',false);
       }
    }
    </script>
    <?php }else{fun_adm_switch_lang();echo'<script type="text/javascript">setupSubmitHighlight(document);</script>';}echo'    </div>    
</div>
';if($c->isUser()){$Xg='';$Xg.="SQL[".count($_SERVER['SQL'])."] info:\n";foreach($_SERVER['SQL']AS$y=>$X)$Xg.='  '.$X."\n";$Xg.="Session info:\n";foreach($_SESSION[ADM_USER_SID]AS$x=>$X){if($x==='password')$X='******';if($x==='driver'){if($X==='server')$X='mysql';}if($x==='logintime')$X=date('Y-m-d H:i:s',$X);$Xg.='  '.$x.': '.json_encode($X)."\n";}$F=fun_adm_object();$za=(array)$F;$Zg="Object info:\n";foreach($za
AS$x=>$X){if($x==='conf_dbpass')$X='******';if(stripos($x,'conf_isapi')!==false)continue;if(is_array($X))continue;$X=var_export($X,true);$Zg.='  '.$x.': '.htmlspecialchars($X)."\n";}$pa=sprintf('%.3f',(microtime(true)-ADM_RUN_TIME));echo'
<div id="adm_footer">
    <div class="copyright">
            <span id="adm_log" title="',$F->conf_note['api_open'],'" style="float: left; color: #0080FF; cursor: pointer; display: block;">',sprintf($F->def_lang_in('copyright'),$pa),'</span>
            <span style="float: right;display: block;">
            <a id="adm_api" title="',$F->conf_note['api_dom'],'" href="',ADM_ME,'adm_api=1">API</a>
            </span>
            <span class="clear"></span>
    </div>
    <textarea style="display: none;">','ADM_URL:'.fun_adm_h(ADM_URL)."\n",'ADM_ME:'.fun_adm_h(ADM_ME)."\n",'ADM_DATA:'.ADM_USER_DATA."\n",'ADM_TYPE:'.(ADM_API?'INAPI':'DEFAULT')."\n",'ADM_GENERATION:'.date('Y-m-d H:i:s',ADM_VER_TIME)."\n",'ADM_STATUS: '.sprintf('%d|%d|%d|%d|%d',fun_adm_constant('ADM_ISAPI'),fun_adm_constant('ADM_IS_ONCE'),fun_adm_constant('ADM_IS_LOCAL'),fun_adm_constant('ADM_DEBUG'),fun_adm_constant('ADM_API_LOGOUT'))."\n\n",fun_adm_h($Xg),fun_adm_h($Zg),'</textarea>
</div>
';}echo'</body></html>';}function
fun_adm_int32($Fe){while($Fe>=2147483648)$Fe-=4294967296;while($Fe<=-2147483649)$Fe+=4294967296;return(int)$Fe;}function
fun_adm_long2str($W,$Ji){$Bg='';foreach($W
as$X)$Bg.=pack('V',$X);if($Ji)return
substr($Bg,0,end($W));return$Bg;}function
fun_adm_str2long($Bg,$Ji){$W=array_values(unpack('V*',str_pad($Bg,4*ceil(strlen($Bg)/4),"\0")));if($Ji)$W[]=strlen($Bg);return$W;}function
fun_adm_xxtea_mx($Oi,$Ni,$qh,$x){return
fun_adm_int32((($Oi>>5&0x7FFFFFF)^$Ni<<2)+(($Ni>>3&0x1FFFFFFF)^$Oi<<4))^fun_adm_int32(($qh^$Ni)+($x^$Oi));}function
fun_adm_encrypt_string($kh,$y){if($kh=="")return"";$y=array_values(unpack("V*",pack("H*",md5($y))));$W=fun_adm_str2long($kh,true);$Fe=count($W)-1;$Oi=$W[$Fe];$Ni=$W[0];$H=floor(6+52/($Fe+1));$qh=0;while($H-->0){$qh=fun_adm_int32($qh+0x9E3779B9);$dc=$qh>>2&3;for($wf=0;$wf<$Fe;$wf++){$Ni=$W[$wf+1];$Ee=fun_adm_xxtea_mx($Oi,$Ni,$qh,$y[$wf&3^$dc]);$Oi=fun_adm_int32($W[$wf]+$Ee);$W[$wf]=$Oi;}$Ni=$W[0];$Ee=fun_adm_xxtea_mx($Oi,$Ni,$qh,$y[$wf&3^$dc]);$Oi=fun_adm_int32($W[$Fe]+$Ee);$W[$Fe]=$Oi;}return
fun_adm_long2str($W,false);}function
fun_adm_decrypt_string($kh,$y){if($kh=="")return"";if(!$y)return
false;$y=array_values(unpack("V*",pack("H*",md5($y))));$W=fun_adm_str2long($kh,false);$Fe=count($W)-1;$Oi=$W[$Fe];$Ni=$W[0];$H=floor(6+52/($Fe+1));$qh=fun_adm_int32($H*0x9E3779B9);while($qh){$dc=$qh>>2&3;for($wf=$Fe;$wf>0;$wf--){$Oi=$W[$wf-1];$Ee=fun_adm_xxtea_mx($Oi,$Ni,$qh,$y[$wf&3^$dc]);$Ni=fun_adm_int32($W[$wf]-$Ee);$W[$wf]=$Ni;}$Oi=$W[$Fe];$Ee=fun_adm_xxtea_mx($Oi,$Ni,$qh,$y[$wf&3^$dc]);$Ni=fun_adm_int32($W[0]-$Ee);$W[0]=$Ni;$qh=fun_adm_int32($qh-0x9E3779B9);}return
fun_adm_long2str($W,true);}function
fun_adm_select($J,$h=null,$of=array(),$z=0){global$w;$ge=array();$u=array();$f=array();$Ma=array();$ii=array();$K=array();fun_adm_odd('');for($r=0;(!$z||$r<$z)&&($L=$J->fetch_row());$r++){if(!$r){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($v=0;$v<count($L);$v++){$m=$J->fetch_field();$E=$m->name;$nf=$m->orgtable;$mf=$m->orgname;$K[$m->table]=$nf;if($of&&$w=="sql")$ge[$v]=($E=="table"?"table=":($E=="possible_keys"?"indexes=":null));elseif($nf!=""){if(!isset($u[$nf])){$u[$nf]=array();foreach(fun_adm_indexes($nf,$h)as$t){if($t["type"]=="PRIMARY"){$u[$nf]=array_flip($t["columns"]);break;}}$f[$nf]=$u[$nf];}if(isset($f[$nf][$mf])){unset($f[$nf][$mf]);$u[$nf][$mf]=$v;$ge[$v]=$nf;}}if($m->charsetnr==63)$Ma[$v]=true;$ii[$v]=$m->type;echo"<th".($nf!=""||$m->name!=$mf?" title='".fun_adm_h(($nf!=""?"$nf.":"").$mf)."'":"").">".fun_adm_h($E).($of?fun_adm_doc_link(array('sql'=>"explain-output.html#explain_".strtolower($E))):"");}echo"</thead>\n";}echo"<tr".fun_adm_odd().">";foreach($L
as$y=>$X){if($X===null)$X="<i>NULL</i>";elseif($Ma[$y]&&!fun_adm_is_utf8($X))$X="<i>".fun_adm_lang(238,strlen($X))."</i>";elseif(!strlen($X))$X="&nbsp;";else{$X=fun_adm_h($X);if($ii[$y]==254)$X="<code>$X</code>";}if(isset($ge[$y])&&!$f[$ge[$y]]){if($of&&$w=="sql"){$R=$L[array_search("table=",$ge)];$_=$ge[$y].urlencode($of[$R]!=""?$of[$R]:$R);}else{$_="edit=".urlencode($ge[$y]);foreach($u[$ge[$y]]as$cb=>$v)$_.="&where".urlencode("[".fun_adm_bracket_escape($cb)."]")."=".urlencode($L[$v]);}$X="<a href='".fun_adm_h(ADM_ME.$_)."'>$X</a>";}echo"<td>$X";}}echo($r?"</table>":"<p class='message'>".fun_adm_lang(175))."\n";return$K;}function
fun_adm_referencable_primary($Rg){$K=array();foreach(fun_adm_table_status('',true)as$vh=>$R){if($vh!=$Rg&&fun_adm_fk_support($R)){foreach(fun_adm_fields($vh)as$m){if($m["primary"]){if($K[$vh]){unset($K[$vh]);break;}$K[$vh]=$m;}}}}return$K;}function
fun_adm_textarea($E,$Y,$M=10,$hb=80){global$w;echo"<textarea name='$E' rows='$M' cols='$hb' class='sqlarea jush-$w' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
as$X)echo
fun_adm_h($X[0])."\n\n\n";}else
echo
fun_adm_h($Y);echo"</textarea>";}function
fun_adm_edit_type($y,$m,$fb,$Vc=array()){global$mh,$ii,$qi,$bf;$V=$m["type"];echo'<td><select name="',$y,'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',fun_adm_on_help("getTarget(event).value",1),'>';if($V&&!isset($ii[$V])&&!isset($Vc[$V]))array_unshift($mh,$V);if($Vc)$mh[fun_adm_lang(18)]=$Vc;echo
fun_adm_optionlist($mh,$V),'</select>
<td><input name="',$y,'[length]" value="',fun_adm_h($m["length"]),'" size="3" onfocus="editingLengthFocus(this);"',(!$m["length"]&&preg_match('~var(char|binary)$~',$V)?" class='required'":""),' onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options">';echo"<select name='$y"."[collation]'".(preg_match('~(char|text|enum|set)$~',$V)?"":" class='hidden'").'><option value="">('.fun_adm_lang(82).')'.fun_adm_optionlist($fb,$m["collation"]).'</select>',($qi?"<select name='$y"."[unsigned]'".(!$V||preg_match('~((^|[^o])int|float|double|decimal)$~',$V)?"":" class='hidden'").'><option>'.fun_adm_optionlist($qi,$m["unsigned"]).'</select>':''),(isset($m['on_update'])?"<select name='$y"."[on_update]'".(preg_match('~timestamp|datetime~',$V)?"":" class='hidden'").'>'.fun_adm_optionlist(array(""=>"(".fun_adm_lang(22).")","CURRENT_TIMESTAMP"),$m["on_update"]).'</select>':''),($Vc?"<select name='$y"."[on_delete]'".(preg_match("~`~",$V)?"":" class='hidden'")."><option value=''>(".fun_adm_lang(21).")".fun_adm_optionlist(explode("|",$bf),$m["on_delete"])."</select> ":" ");}function
fun_adm_process_length($ce){global$oc;return(preg_match("~^\\s*\\(?\\s*$oc(?:\\s*,\\s*$oc)*+\\s*\\)?\\s*\$~",$ce)&&preg_match_all("~$oc~",$ce,$C)?"(".implode(",",$C[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$ce)));}function
fun_adm_process_type($m,$db="COLLATE"){global$qi;return" $m[type]".fun_adm_process_length($m["length"]).(preg_match('~(^|[^o])int|float|double|decimal~',$m["type"])&&in_array($m["unsigned"],$qi)?" $m[unsigned]":"").(preg_match('~char|text|enum|set~',$m["type"])&&$m["collation"]?" $db ".fun_adm_q($m["collation"]):"");}function
fun_adm_process_field($m,$gi){global$w;$Ob=$m["default"];return
array(fun_adm_idf_escape(trim($m["field"])),fun_adm_process_type($gi),($m["null"]?" NULL":" NOT NULL"),(isset($Ob)?" DEFAULT ".((preg_match('~time~',$m["type"])&&preg_match('~^CURRENT_TIMESTAMP$~i',$Ob))||($w=="sqlite"&&preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i',$Ob))||($m["type"]=="bit"&&preg_match("~^([0-9]+|b'[0-1]+')\$~",$Ob))||($w=="pgsql"&&preg_match("~^[a-z]+\\(('[^']*')+\\)\$~",$Ob))?$Ob:fun_adm_q($Ob)):""),(preg_match('~timestamp|datetime~',$m["type"])&&$m["on_update"]?" ON UPDATE $m[on_update]":""),(fun_adm_support("comment")&&$m["comment"]!=""?" COMMENT ".fun_adm_q($m["comment"]):""),($m["auto_increment"]?fun_adm_auto_increment():null),);}function
fun_adm_type_class($V){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$y=>$X){if(preg_match("~$y|$X~",$V))return" class='$y'";}}function
fun_adm_edit_fields($n,$fb,$V="TABLE",$Vc=array(),$lb=false){global$g,$yd;$n=array_values($n);echo'<thead><tr class="wrap">
';if($V=="PROCEDURE"){echo'<td>&nbsp;';}echo'<th>',($V=="TABLE"?fun_adm_lang(239):fun_adm_lang(240)),'<td>',fun_adm_lang(13),'<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
<td>',fun_adm_lang(241),'<td>',fun_adm_lang(242);if($V=="TABLE"){echo'<td>NULL
<td><input type="radio" name="auto_increment_col" value=""><acronym title="',fun_adm_lang(14),'">AI</acronym>',fun_adm_doc_link(array('sql'=>"example-auto-increment.html",'sqlite'=>"autoinc.html",'pgsql'=>"datatype.html#DATATYPE-SERIAL",'mssql'=>"ms186775.aspx",)),'<td>',fun_adm_lang(15),(fun_adm_support("comment")?"<td".($lb?"":" class='hidden'").">".fun_adm_lang(11):"");}echo'<td>',"<input type='image' class='icon' name='add[".(fun_adm_support("move_col")?0:count($n))."]' src='".fun_adm_incl('plus.gif')."' alt='+' title='".fun_adm_lang(94)."'>",'<script type="text/javascript">row_count = ',count($n),';</script>
</thead>
<tbody onkeydown="return editingKeydown(event);">
';foreach($n
as$r=>$m){$r++;$pf=$m[($_POST?"orig":"field")];$Tb=(isset($_POST["add"][$r-1])||(isset($m["field"])&&!$_POST["drop_col"][$r]))&&(fun_adm_support("drop_col")||$pf=="");echo'<tr',($Tb?"":" style='display: none;'"),'>
',($V=="PROCEDURE"?"<td>".fun_adm_html_select("fields[$r][inout]",explode("|",$yd),$m["inout"]):""),'<th>';if($Tb){echo'<input name="fields[',$r,'][field]" value="',fun_adm_h($m["field"]),'" onchange="editingNameChange(this);',($m["field"]!=""||count($n)>1?'':' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'),'" maxlength="64" autocapitalize="off">';}echo'<input type="hidden" name="fields[',$r,'][orig]" value="',fun_adm_h($pf),'">
';fun_adm_edit_type("fields[$r]",$m,$fb,$Vc);if($V=="TABLE"){echo'<td>',fun_adm_checkbox("fields[$r][null]",1,$m["null"],"","","block"),'<td><label class="block"><input type="radio" name="auto_increment_col" value="',$r,'"';if($m["auto_increment"]){echo' checked';}?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"></label><td><?php
echo
fun_adm_checkbox("fields[$r][has_default]",1,$m["has_default"]),'<input name="fields[',$r,'][default]" value="',fun_adm_h($m["default"]),'" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;">
',(fun_adm_support("comment")?"<td".($lb?"":" class='hidden'")."><input name='fields[$r][comment]' value='".fun_adm_h($m["comment"])."' maxlength='".($g->server_info>=5.5?1024:255)."'>":"");}echo"<td>",(fun_adm_support("move_col")?"<input type='image' class='icon' name='add[$r]' src='".fun_adm_incl('plus.gif')."' alt='+' title='".fun_adm_lang(94)."' onclick='return !editingAddRow(this, 1);'>&nbsp;"."<input type='image' class='icon' name='up[$r]' src='".fun_adm_incl('up.gif')."' alt='^' title='".fun_adm_lang(243)."'>&nbsp;"."<input type='image' class='icon' name='down[$r]' src='".fun_adm_incl('down.gif')."' alt='v' title='".fun_adm_lang(244)."'>&nbsp;":""),($pf==""||fun_adm_support("drop_col")?"<input type='image' class='icon' name='drop_col[$r]' src='".fun_adm_incl('cross.gif')."' alt='x' title='".fun_adm_lang(96)."' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">":""),"\n";}}function
fun_adm_process_fields(&$n){ksort($n);$Ue=0;if($_POST["up"]){$Vd=0;foreach($n
as$y=>$m){if(key($_POST["up"])==$y){unset($n[$y]);array_splice($n,$Vd,0,array($m));break;}if(isset($m["field"]))$Vd=$Ue;$Ue++;}}elseif($_POST["down"]){$Xc=false;foreach($n
as$y=>$m){if(isset($m["field"])&&$Xc){unset($n[key($_POST["down"])]);array_splice($n,$Ue,0,array($Xc));break;}if(key($_POST["down"])==$y)$Xc=$m;$Ue++;}}elseif($_POST["add"]){$n=array_values($n);array_splice($n,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
false;return
true;}function
fun_adm_normalize_enum($B){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($B[0][0].$B[0][0],$B[0][0],substr($B[0],1,-1))),'\\'))."'";}function
fun_adm_grant($dd,$Sf,$f,$af){if(!$Sf)return
true;if($Sf==array("ALL PRIVILEGES","GRANT OPTION"))return($dd=="GRANT"?fun_adm_queries("$dd ALL PRIVILEGES$af WITH GRANT OPTION"):fun_adm_queries("$dd ALL PRIVILEGES$af")&&fun_adm_queries("$dd GRANT OPTION$af"));return
fun_adm_queries("$dd ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$f, ",$Sf).$f).$af);}function
fun_adm_drop_create($Xb,$i,$Yb,$Fh,$ac,$A,$ye,$we,$xe,$Xe,$Je){if($_POST["drop"])fun_adm_query_redirect($Xb,$A,$ye);elseif($Xe=="")fun_adm_query_redirect($i,$A,$xe);elseif($Xe!=$Je){$zb=fun_adm_queries($i);fun_adm_queries_redirect($A,$we,$zb&&fun_adm_queries($Xb));if($zb)fun_adm_queries($Yb);}else
fun_adm_queries_redirect($A,$we,fun_adm_queries($Fh)&&fun_adm_queries($ac)&&fun_adm_queries($Xb)&&fun_adm_queries($i));}function
fun_adm_create_trigger($af,$L){global$w;$Nh=" $L[Timing] $L[Event]".($L["Event"]=="UPDATE OF"?" ".fun_adm_idf_escape($L["Of"]):"");return"CREATE TRIGGER ".fun_adm_idf_escape($L["Trigger"]).($w=="mssql"?$af.$Nh:$Nh.$af).rtrim(" $L[Type]\n$L[Statement]",";").";";}function
fun_adm_create_routine($yg,$L){global$yd;$O=array();$n=(array)$L["fields"];ksort($n);foreach($n
as$m){if($m["field"]!="")$O[]=(preg_match("~^($yd)\$~",$m["inout"])?"$m[inout] ":"").fun_adm_idf_escape($m["field"]).fun_adm_process_type($m,"CHARACTER SET");}return"CREATE $yg ".fun_adm_idf_escape(trim($L["name"]))." (".implode(", ",$O).")".(isset($_GET["function"])?" RETURNS".fun_adm_process_type($L["returns"],"CHARACTER SET"):"").($L["language"]?" LANGUAGE $L[language]":"").rtrim("\n$L[definition]",";").";";}function
fun_adm_remove_definer($I){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',fun_adm_logged_user()).'`~','\\1',$I);}function
fun_adm_format_foreign_key($p){global$bf;return" FOREIGN KEY (".implode(", ",array_map('fun_adm_idf_escape',$p["source"])).") REFERENCES ".fun_adm_table($p["table"])." (".implode(", ",array_map('fun_adm_idf_escape',$p["target"])).")".(preg_match("~^($bf)\$~",$p["on_delete"])?" ON DELETE $p[on_delete]":"").(preg_match("~^($bf)\$~",$p["on_update"])?" ON UPDATE $p[on_update]":"");}function
fun_adm_tar_file($Nc,$Vh){$K=pack("a100a8a8a8a12a12",$Nc,644,0,0,decoct($Vh->size),decoct(time()));$Za=8*32;for($r=0;$r<strlen($K);$r++)$Za+=ord($K[$r]);$K.=sprintf("%06o",$Za)."\0 ";echo$K,str_repeat("\0",512-strlen($K));$Vh->send();echo
str_repeat("\0",511-($Vh->size+511)%512);}function
fun_adm_ini_bytes($xd){$X=ini_get($xd);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
fun_adm_doc_link($Ff){global$w,$g;$vi=array('sql'=>"http://dev.mysql.com/doc/refman/".substr($g->server_info,0,3)."/en/",'sqlite'=>"http://www.sqlite.org/",'pgsql'=>"http://www.postgresql.org/docs/".substr($g->server_info,0,3)."/static/",'mssql'=>"http://msdn.microsoft.com/library/",'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);return($Ff[$w]?"<a href='$vi[$w]$Ff[$w]' target='_blank' rel='noreferrer'><sup>?</sup></a>":"");}function
fun_adm_ob_gzencode($Q){return
gzencode($Q);}function
fun_adm_db_size($k){global$g;if(!$g->select_db($k))return"?";$K=0;foreach(fun_adm_table_status()as$S)$K+=$S["Data_length"]+$S["Index_length"];return
fun_adm_format_number($K);}function
fun_adm_set_utf8mb4($i){global$g;static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$i)){$O=true;echo"SET NAMES ".fun_adm_charset($g).";\n\n";}}function
fun_adm_connect_error(){global$c,$g,$U,$l;if(ADM_DB!==''){header("HTTP/1.1 404 Not Found");fun_adm_page_header(fun_adm_lang(33).": ".fun_adm_h(ADM_DB),fun_adm_lang(245),true);}else{if(isset($_POST["db"])&&$_POST["db"]&&!$l)fun_adm_queries_redirect(substr(ADM_ME,0,-1),fun_adm_lang(246),fun_adm_drop_databases($_POST["db"]));fun_adm_page_header(fun_adm_lang(33).''.fun_adm_lang(3),$l,false);echo"<p class='links'>\n";foreach(array('index'=>fun_adm_lang(41),'database'=>fun_adm_lang(42),'privileges'=>fun_adm_lang(40),'processlist'=>fun_adm_lang(43),'variables'=>fun_adm_lang(44),'status'=>fun_adm_lang(45),)as$y=>$X){if(fun_adm_support($y)){$y==='index'&&$y='';if($y)echo"<a href='".fun_adm_h(ADM_ME)."$y='>$X</a>\n";else
echo"<a href='".rtrim(fun_adm_h(ADM_ME),'?')."'>$X</a>\n";}}echo'</p>';$F=fun_adm_object();$Mh=0;if(in_array($F->conf_lang,array('zh','zw')))$Mh=8;elseif($F->conf_lang==='ja')$Mh=9;elseif($F->conf_lang==='de')$Mh=1;echo"<p>".fun_adm_lang(247,$_SERVER['STYPE'][ADM_DRIVER],"<b>".fun_adm_h($g->server_info)."</b>","<b>".$g->extension."</b>")."</p>\n","<p>".fun_adm_lang(248,'<strong>'.(fun_adm_logged_user())."</strong> ").fun_adm_lang(1).':<strong>'.date('Y-m-d H:i:s',fun_adm_get_session('logintime')+$Mh*3600)."</strong></p>\n";$j=$c->databases();if($j){$Kg=fun_adm_support("scheme");$fb=fun_adm_collations();echo"<form action='' enctype=\"application/x-www-form-urlencoded\" method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr>".(fun_adm_support("database")?"<td>&nbsp;":"")."<th>".fun_adm_lang(33)." - <a href='".fun_adm_h(ADM_ME)."refresh=1'>".fun_adm_lang(38)."</a>"."<td>".fun_adm_lang(197)."<td>".fun_adm_lang(36)."<td>".fun_adm_lang(39)."</thead>\n";$j=(isset($_GET['dbsize'])?fun_adm_count_tables($j):array_flip($j));$Lb=isset($_GET["dbsize"])?$_GET["dbsize"]:'';foreach($j
as$k=>$T){$xg=fun_adm_h(ADM_ME)."db=".urlencode($k);$Ib=isset($_POST["db"])?$_POST["db"]:array();echo"<tr".fun_adm_odd().">".(fun_adm_support("database")?"<td>".fun_adm_checkbox("db[]",$k,in_array($k,(array)$Ib)):""),"<th><a href='$xg'>".fun_adm_h($k)."</a>";$eb=fun_adm_nbsp(fun_adm_db_collation($k,$fb));echo"<td>".(fun_adm_support("database")?"<a title='".fun_adm_lang(101)."'>$eb</a>":$eb),"<td><a href='$xg&amp;schema=' id='tables-".fun_adm_h($k)."' title='".fun_adm_lang(27)."'>".($Lb?$T:"..")."</a>","<td id='size-".fun_adm_h($k)."'>".($Lb?fun_adm_db_size($k):".."),"\n";}echo"</table>\n",(fun_adm_support("database")?"<fieldset><legend>".fun_adm_lang(186)." <span id='selected'></span></legend><div>\n"."<input type='submit' class='adm_refresh' value='".fun_adm_lang(38)."' /> "."<input type='submit' name='drop' value='".fun_adm_lang(85)."'".fun_adm_confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();ajaxSetHtml('".fun_adm_js_escape(ADM_ME)."script=connect&adm_rand=".urlencode(microtime(true))."');</script>\n","<input type='hidden' name='token' value='$U'>\n","</form>\n";}}fun_adm_page_footer('db');}if(extension_loaded('PDO')){class
Cls_Adm_Min_PDO
extends
PDO{public$_result;public$server_info;public$affected_rows;public$errno;public$error;function
__construct(){global$c;$Lf=array_search('SQL',$c->operators);if($Lf!==false)unset($c->operators[$Lf]);}function
dsn($bc,$Ai,$Df){try{parent::__construct($bc,$Ai,$Df);$this->setAttribute(13,array('Cls_Adm_Min_PDOStatement'));$this->server_info=$this->getAttribute(4);return
true;}catch(Exception$wc){fun_adm_set_session('linkmsg',mb_convert_encoding($wc->getMessage(),'utf-8','gbk'));return
false;}}function
query($I,$ki=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return
false;}$this->store_result($J);return$J;}function
multi_query($I){return$this->_result=$this->query($I);}function
store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return
false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return
true;}function
next_result(){if(!$this->_result)return
false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function
result($I,$m=0){$J=$this->query($I);if(!$J)return
false;$L=$J->fetch();return$L[$m];}}class
Cls_Adm_Min_PDOStatement
extends
PDOStatement{public$_offset=0;public$num_rows;function
fetch_assoc(){return$this->fetch(2);}function
fetch_row(){return$this->fetch(3);}function
fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}class
Cls_Adm_Min_SQL{public$_conn;public
function
Cls_Adm_Min_SQL($g){$this->_conn=$g;}public
function
select($R,$N,$Z,$fd,$lf=array(),$z=1,$G=0,$Qf=false){global$c,$w;$Cd=(count($fd)<count($N));$I=$c->selectQueryBuild($N,$Z,$fd,$lf,$z,$G);if(!$I)$I="SELECT".fun_adm_limit(($_GET["page"]!="last"&&+$z&&$fd&&$Cd&&$w=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".fun_adm_table($R),($Z?"\nWHERE ".implode(" AND ",$Z):"").($fd&&$Cd?"\nGROUP BY ".implode(", ",$fd):"").($lf?"\nORDER BY ".implode(", ",$lf):""),($z!=""?+$z:null),($G?$z*$G:0),"\n");$ih=microtime(true);$K=$this->_conn->query($I);if($Qf)echo$c->selectQuery($I,fun_adm_format_time($ih));return$K;}public
function
delete($R,$Xf,$z=0){$I="FROM ".fun_adm_table($R);return
fun_adm_queries("DELETE".($z?fun_adm_limit1($I,$Xf):" $I$Xf"));}public
function
update($R,$O,$Xf,$z=0,$Sg="\n"){$Ci=array();foreach($O
as$y=>$X)$Ci[]="$y = $X";$I=fun_adm_table($R)." SET$Sg".implode(",$Sg",$Ci);return
fun_adm_queries("UPDATE".($z?fun_adm_limit1($I,$Xf):" $I$Xf"));}public
function
insert($R,$O){return
fun_adm_queries("INSERT INTO ".fun_adm_table($R).($O?" (".implode(", ",array_keys($O)).")\nVALUES (".implode(", ",$O).")":" DEFAULT VALUES"));}public
function
insertUpdate($R,$M,$Of){return
false;}public
function
begin(){return
fun_adm_queries("BEGIN");}public
function
commit(){return
fun_adm_queries("COMMIT");}public
function
rollback(){return
fun_adm_queries("ROLLBACK");}}function
fun_adm_db_sqlite($Yf){static$r=0;if($r!==0)return
true;$r++;if($Yf==='pdo'&&ADM_IS_PDOSQLITE){class
Cls_Adm_Min_SQLite
extends
Cls_Adm_Min_PDO{var$extension="PDO_SQLite";public
function
Cls_Adm_Min_SQLite($Nc){$this->dsn(ADM_DRIVER.":$Nc","","");}public
function
query($I,$ki=false){fun_adm_query($I);return
parent::query($I);}}}else
if(($Md=class_exists('SQLite3'))||class_exists('SQLiteDatabase')){if($Md){class
Cls_Adm_Min_SQLite{var$extension="SQLite3",$server_info,$affected_rows,$errno,$error,$_link;function
Cls_Adm_Min_SQLite($Nc){$this->_link=new
SQLite3($Nc);$Fi=$this->_link->version();$this->server_info=$Fi['versionString'];}function
query($I){fun_adm_query($I);$J=@$this->_link->query($I);$this->error='';if(!$J){$this->errno=$this->_link->lastErrorCode();$this->error=$this->_link->lastErrorMsg();return
false;}elseif($J->numColumns())return
new
Cls_Adm_Min_Result($J);$this->affected_rows=$this->_link->changes();return
true;}function
quote($Q){return(fun_adm_is_utf8($Q)?"'".$this->_link->escapeString($Q)."'":"x'".reset(unpack('H*',$Q))."'");}function
store_result(){return$this->_result;}function
result($I,$m=0){$J=$this->query($I);if(!is_object($J))return
false;$L=$J->_result->fetchArray();return$L[$m];}}class
Cls_Adm_Min_Result{var$_result,$_offset=0,$num_rows;function
Cls_Adm_Min_Result($J){$this->_result=$J;}function
fetch_assoc(){return$this->_result->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return$this->_result->fetchArray(SQLITE3_NUM);}function
fetch_field(){$e=$this->_offset++;$V=$this->_result->columnType($e);return(object)array("name"=>$this->_result->columnName($e),"type"=>$V,"charsetnr"=>($V==SQLITE3_BLOB?63:0),);}function
__desctruct(){return$this->_result->finalize();}}}else{class
Cls_Adm_Min_SQLite{var$extension="SQLite",$server_info,$affected_rows,$error,$_link;function
Cls_Adm_Min_SQLite($Nc){$this->server_info=sqlite_libversion();$this->_link=new
SQLiteDatabase($Nc);}function
query($I,$ki=false){fun_adm_query($I);$_e=($ki?"unbufferedQuery":"query");$J=@$this->_link->$_e($I,SQLITE_BOTH,$l);$this->error="";if(!$J){$this->error=$l;return
false;}elseif($J===true){$this->affected_rows=$this->changes();return
true;}return
new
Cls_Adm_Min_Result($J);}function
quote($Q){return"'".sqlite_escape_string($Q)."'";}function
store_result(){return$this->_result;}function
result($I,$m=0){$J=$this->query($I);if(!is_object($J))return
false;$L=$J->_result->fetch();return$L[$m];}}class
Cls_Adm_Min_Result{var$_result,$_offset=0,$num_rows;function
Cls_Adm_Min_Result($J){$this->_result=$J;if(method_exists($J,'numRows'))$this->num_rows=$J->numRows();}function
fetch_assoc(){$L=$this->_result->fetch(SQLITE_ASSOC);if(!$L)return
false;$K=array();foreach($L
as$y=>$X)$K[($y[0]=='"'?fun_adm_idf_unescape($y):$y)]=$X;return$K;}function
fetch_row(){return$this->_result->fetch(SQLITE_NUM);}function
fetch_field(){$E=$this->_result->fieldName($this->_offset++);$Gf='(\\[.*]|"(?:[^"]|"")*"|(.+))';if(preg_match("~^($Gf\\.)?$Gf\$~",$E,$B)){$R=($B[3]!=""?$B[3]:fun_adm_idf_unescape($B[2]));$E=($B[5]!=""?$B[5]:fun_adm_idf_unescape($B[4]));}return(object)array("name"=>$E,"orgname"=>$E,"orgtable"=>$R,);}}}}if(class_exists('Cls_Adm_Min_SQLite')){class
Cls_Adm_Min_DB
extends
Cls_Adm_Min_SQLite{function
Cls_Adm_Min_DB(){$this->Cls_Adm_Min_SQLite(":memory:");}function
select_db($Nc){$Nc=fun_adm_get_path($Nc);if(!$Nc)return
false;if(is_readable($Nc)&&$this->query("ATTACH ".$this->quote(preg_match("~(^[/\\\\]|:)~",$Nc)?$Nc:dirname($_SERVER["SCRIPT_FILENAME"])."/$Nc")." AS a")){$this->Cls_Adm_Min_SQLite($Nc);return
true;}return
false;}function
multi_query($I){return$this->_result=$this->query($I);}function
next_result(){return
false;}}}class
Cls_Adm_Min_Driver
extends
Cls_Adm_Min_SQL{function
insertUpdate($R,$M,$Of){$Ci=array();foreach($M
as$O)$Ci[]="(".implode(", ",$O).")";return
fun_adm_queries("REPLACE INTO ".fun_adm_table($R)." (".implode(", ",array_keys(reset($M))).") VALUES\n".implode(",\n",$Ci));}}function
fun_adm_get_path($Nc){global$g;if(is_file($Nc))return$Nc;$Ef=fun_adm_DATA();if(!$Ef){$g->error='directory does not exist';return
false;}return$Ef.$Nc;}function
fun_adm_idf_escape($s){return'"'.str_replace('"','""',$s).'"';}function
fun_adm_table($s){return
fun_adm_idf_escape($s);}function
fun_adm_connect(){return
new
Cls_Adm_Min_DB();}function
fun_adm_get_databases(){$Sb=fun_adm_DATA();$jg=array();if(is_dir($Sb)){$Jb=scandir($Sb);foreach($Jb
AS$x=>$Ec){if($x==='.'||$x==='..')continue;if(check_sqlite_name($Ec))$jg[]=$Ec;}}if(ADM_DB_LOCK){foreach($jg
AS$x=>$X){if(!in_array($X,$_SERVER['DB_LIST']))unset($jg[$x]);}}clearstatcache();return$jg;}function
fun_adm_limit($I,$Z,$z,$Ue=0,$Sg=" "){return" $I$Z".($z!==null?$Sg."LIMIT $z".($Ue?" OFFSET $Ue":""):"");}function
fun_adm_limit1($I,$Z){global$g;return($g->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")?fun_adm_limit($I,$Z,1):" $I$Z");}function
fun_adm_db_collation($k,$fb){global$g;return$g->result("PRAGMA encoding");}function
fun_adm_engines(){return
array();}function
fun_adm_logged_user(){$F=fun_adm_object();return
fun_adm_h($F->conf_dbuser).' <a href="'.ADM_ME.'db=user.db&edit=user&where%5Buid%5D=1">'.fun_adm_lang(23).fun_adm_lang(161).'</a>';}function
fun_adm_tables_list(){return
fun_adm_get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name",1);}function
fun_adm_count_tables($j){return
array();}function
fun_adm_table_status($E=""){global$g;$K=array();foreach(fun_adm_get_rows("SELECT name AS Name, type AS Engine FROM sqlite_master WHERE type IN ('table', 'view') ".($E!=""?"AND name = ".fun_adm_q($E):"ORDER BY name"))as$L){$L["Oid"]=1;$L["Auto_increment"]="";$L["Rows"]=$g->result("SELECT COUNT(*) FROM ".fun_adm_idf_escape($L["Name"]));$K[$L["Name"]]=$L;}foreach(fun_adm_get_rows("SELECT * FROM sqlite_sequence",null,"")as$L)$K[$L["name"]]["Auto_increment"]=$L["seq"];return($E!=""?$K[$E]:$K);}function
fun_adm_is_view($S){return$S["Engine"]=="view";}function
fun_adm_fk_support($S){global$g;return!$g->result("SELECT sqlite_compileoption_used('OMIT_FOREIGN_KEY')");}function
fun_adm_fields($R){global$g;$K=array();$Of="";foreach(fun_adm_get_rows("PRAGMA table_info(".fun_adm_table($R).")")as$L){$E=$L["name"];$V=strtolower($L["type"]);$Ob=$L["dflt_value"];$K[$E]=array("field"=>$E,"type"=>(preg_match('~int~i',$V)?"integer":(preg_match('~char|clob|text~i',$V)?"text":(preg_match('~blob~i',$V)?"blob":(preg_match('~real|floa|doub~i',$V)?"real":"numeric")))),"full_type"=>$V,"default"=>(preg_match("~'(.*)'~",$Ob,$B)?str_replace("''","'",$B[1]):($Ob=="NULL"?null:$Ob)),"null"=>!$L["notnull"],"privileges"=>array("select"=>1,"insert"=>1,"update"=>1),"primary"=>$L["pk"],);if($L["pk"]){if($Of!="")$K[$Of]["auto_increment"]=false;elseif(preg_match('~^integer$~i',$V))$K[$E]["auto_increment"]=true;$Of=$E;}}$gh=$g->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".fun_adm_q($R));preg_match_all('~(("[^"]*+")+|[a-z0-9_]+)\s+text\s+COLLATE\s+(\'[^\']+\'|\S+)~i',$gh,$C,PREG_SET_ORDER);foreach($C
as$B){$E=str_replace('""','"',preg_replace('~^"|"$~','',$B[1]));if($K[$E])$K[$E]["collation"]=trim($B[3],"'");}return$K;}function
fun_adm_indexes($R,$h=null){global$g;if(!is_object($h))$h=$g;$K=array();$gh=$h->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".fun_adm_q($R));if(preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*")++)~i',$gh,$B)){$K[""]=array("type"=>"PRIMARY","columns"=>array(),"lengths"=>array(),"descs"=>array());preg_match_all('~((("[^"]*+")+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i',$B[1],$C,PREG_SET_ORDER);foreach($C
as$B){$K[""]["columns"][]=fun_adm_idf_unescape($B[2]).$B[4];$K[""]["descs"][]=(preg_match('~DESC~i',$B[5])?'1':null);}}if(!$K){foreach(fun_adm_fields($R)as$E=>$m){if($m["primary"])$K[""]=array("type"=>"PRIMARY","columns"=>array($E),"lengths"=>array(),"descs"=>array(null));}}$hh=fun_adm_get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ".fun_adm_q($R),$h);foreach(fun_adm_get_rows("PRAGMA index_list(".fun_adm_table($R).")",$h)as$L){$E=$L["name"];$t=array("type"=>($L["unique"]?"UNIQUE":"INDEX"));$t["lengths"]=array();$t["descs"]=array();foreach(fun_adm_get_rows("PRAGMA index_info(".fun_adm_idf_escape($E).")",$h)as$Ag){$t["columns"][]=$Ag["name"];$t["descs"][]=null;}if(preg_match('~^CREATE( UNIQUE)? INDEX '.preg_quote(fun_adm_idf_escape($E).' ON '.fun_adm_idf_escape($R),'~').' \((.*)\)$~i',$hh[$E],$qg)){preg_match_all('/("[^"]*+")+( DESC)?/',$qg[2],$C);foreach($C[2]as$y=>$X){if($X)$t["descs"][$y]='1';}}if(!$K[""]||$t["type"]!="UNIQUE"||$t["columns"]!=$K[""]["columns"]||$t["descs"]!=$K[""]["descs"]||!preg_match("~^sqlite_~",$E))$K[$E]=$t;}return$K;}function
fun_adm_foreign_keys($R){$K=array();foreach(fun_adm_get_rows("PRAGMA foreign_key_list(".fun_adm_table($R).")")as$L){$p=&$K[$L["id"]];if(!$p)$p=$L;$p["source"][]=$L["from"];$p["target"][]=$L["to"];}return$K;}function
fun_adm_view($E){global$g;return
array("select"=>preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\\s+~iU','',$g->result("SELECT sql FROM sqlite_master WHERE name = ".fun_adm_q($E))));}function
fun_adm_collations(){return(isset($_GET["create"])?fun_adm_get_vals("PRAGMA collation_list",1):array());}function
fun_adm_information_schema($k){return
false;}function
fun_adm_error(){global$g;return
fun_adm_h($g->error);}function
check_sqlite_name($E){global$g;$Dc="db|sdb|sqlite";if(!preg_match("~^[^\\0]*\\.($Dc)\$~",$E)){$g->error=fun_adm_lang(249,str_replace("|",", ",$Dc));return
false;}return
true;}function
fun_adm_create_database($k,$eb){global$g;$k=fun_adm_get_path($k);if(!$k)return
false;if(file_exists($k)){$g->error=fun_adm_lang(64);return
false;}if(!check_sqlite_name($k))return
false;try{$_=new
Cls_Adm_Min_SQLite($k);}catch(Exception$wc){$g->error=$wc->getMessage();return
false;}$_->query('PRAGMA encoding = "UTF-8"');$_->query('CREATE TABLE "adminer" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT)');$_->query('DROP TABLE adminer');return
true;}function
fun_adm_drop_databases($j){global$g;$g->Cls_Adm_Min_SQLite(":memory:");foreach($j
as$k){$k=fun_adm_get_path($k);if(!$k||!@unlink($k)){$g->error=fun_adm_lang(64);return
false;}}return
true;}function
fun_adm_rename_database($E,$eb){global$g;$E=fun_adm_get_path($E);if(!$E)return
false;$k=fun_adm_get_path(ADM_DB);if(!$E)return
false;if(!check_sqlite_name($E))return
false;$g->Cls_Adm_Min_SQLite(":memory:");$g->error=fun_adm_lang(64);return@rename($k,$E);}function
fun_adm_auto_increment(){return" PRIMARY KEY".(ADM_DRIVER=='sqlite'?' AUTOINCREMENT':'');}function
fun_adm_alter_table($R,$E,$n,$Tc,$kb,$mc,$eb,$Ea,$Af){$xi=($R==""||$Tc);foreach($n
as$m){if($m[0]!=""||!$m[1]||$m[2]){$xi=true;break;}}$d=array();$tf=array();foreach($n
as$m){if($m[1]){$d[]=($xi?$m[1]:"ADD ".implode($m[1]));if($m[0]!="")$tf[$m[0]]=$m[1][0];}}if(!$xi){foreach($d
as$X){if(!fun_adm_queries("ALTER TABLE ".fun_adm_table($R)." $X"))return
false;}if($R!=$E&&!fun_adm_queries("ALTER TABLE ".fun_adm_table($R)." RENAME TO ".fun_adm_table($E)))return
false;}elseif(!recreate_table($R,$E,$d,$tf,$Tc))return
false;if($Ea)fun_adm_queries("UPDATE sqlite_sequence SET seq = $Ea WHERE name = ".fun_adm_q($E));return
true;}function
recreate_table($R,$E,$n,$tf,$Tc,$u=array()){if($R!=""){if(!$n){foreach(fun_adm_fields($R)as$y=>$m){$n[]=fun_adm_process_field($m,$m);$tf[$y]=fun_adm_idf_escape($y);}}$Pf=false;foreach($n
as$m){if($m[6])$Pf=true;}$Zb=array();foreach($u
as$y=>$X){if($X[2]=="DROP"){$Zb[$X[1]]=true;unset($u[$y]);}}foreach(fun_adm_indexes($R)as$Od=>$t){$f=array();foreach($t["columns"]as$y=>$e){if(!$tf[$e])continue
2;$f[]=$tf[$e].($t["descs"][$y]?" DESC":"");}if(!$Zb[$Od]){if($t["type"]!="PRIMARY"||!$Pf)$u[]=array($t["type"],$Od,$f);}}foreach($u
as$y=>$X){if($X[0]=="PRIMARY"){unset($u[$y]);$Tc[]="  PRIMARY KEY (".implode(", ",$X[2]).")";}}foreach(fun_adm_foreign_keys($R)as$Od=>$p){foreach($p["source"]as$y=>$e){if(!$tf[$e])continue
2;$p["source"][$y]=fun_adm_idf_unescape($tf[$e]);}if(!isset($Tc[" $Od"]))$Tc[]=" ".fun_adm_format_foreign_key($p);}fun_adm_queries("BEGIN");}foreach($n
as$y=>$m)$n[$y]="  ".implode($m);$n=array_merge($n,array_filter($Tc));if(!fun_adm_queries("CREATE TABLE ".fun_adm_table($R!=""?"adminers_$E":$E)." (\n".implode(",\n",$n)."\n)"))return
false;if($R!=""){if($tf&&!fun_adm_queries("INSERT INTO ".fun_adm_table("adminers_$E")." (".implode(", ",$tf).") SELECT ".implode(", ",array_map('fun_adm_idf_escape',array_keys($tf)))." FROM ".fun_adm_table($R)))return
false;$fi=array();foreach(fun_adm_triggers($R)as$di=>$Nh){$ci=fun_adm_trigger($di);$fi[]="CREATE TRIGGER ".fun_adm_idf_escape($di)." ".implode(" ",$Nh)." ON ".fun_adm_table($E)."\n$ci[Statement]";}if(!fun_adm_queries("DROP TABLE ".fun_adm_table($R)))return
false;fun_adm_queries("ALTER TABLE ".fun_adm_table("adminers_$E")." RENAME TO ".fun_adm_table($E));if(!fun_adm_alter_indexes($E,$u))return
false;foreach($fi
as$ci){if(!fun_adm_queries($ci))return
false;}fun_adm_queries("COMMIT");}return
true;}function
index_sql($R,$V,$E,$f){return"CREATE $V ".($V!="INDEX"?"INDEX ":"").fun_adm_idf_escape($E!=""?$E:uniqid($R."_"))." ON ".fun_adm_table($R)." $f";}function
fun_adm_alter_indexes($R,$d){foreach($d
as$Of){if($Of[0]=="PRIMARY")return
recreate_table($R,$R,array(),array(),array(),$d);}foreach(array_reverse($d)as$X){if(!fun_adm_queries($X[2]=="DROP"?"DROP INDEX ".fun_adm_idf_escape($X[1]):index_sql($R,$X[0],$X[1],"(".implode(", ",$X[2]).")")))return
false;}return
true;}function
fun_adm_truncate_tables($T){return
fun_adm_apply_queries("DELETE FROM",$T);}function
fun_adm_drop_views($Hi){return
fun_adm_apply_queries("DROP VIEW",$Hi);}function
fun_adm_drop_tables($T){return
fun_adm_apply_queries("DROP TABLE",$T);}function
fun_adm_move_tables($T,$Hi,$Ch){return
false;}function
fun_adm_copy_tables($T,$Hi,$Ch){}function
fun_adm_trigger($E){global$g;if($E=="")return
array("Statement"=>"BEGIN\n\t;\nEND");$s='(?:[^`"\\s]+|`[^`]*`|"[^"]*")+';$ei=fun_adm_trigger_options();preg_match("~^CREATE\\s+TRIGGER\\s*$s\\s*(".implode("|",$ei["Timing"]).")\\s+([a-z]+)(?:\\s+OF\\s+($s))?\\s+ON\\s*$s\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",$g->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = ".fun_adm_q($E)),$B);$Te=$B[3];return
array("Timing"=>strtoupper($B[1]),"Event"=>strtoupper($B[2]).($Te?" OF":""),"Of"=>($Te[0]=='`'||$Te[0]=='"'?fun_adm_idf_unescape($Te):$Te),"Trigger"=>$E,"Statement"=>$B[4],);}function
fun_adm_triggers($R){$K=array();$ei=fun_adm_trigger_options();foreach(fun_adm_get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".fun_adm_q($R))as$L){preg_match('~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*('.implode("|",$ei["Timing"]).')\\s*(.*)\\s+ON\\b~iU',$L["sql"],$B);$K[$L["name"]]=array($B[1],$B[2]);}return$K;}function
fun_adm_trigger_options(){return
array("Timing"=>array("BEFORE","AFTER","INSTEAD OF"),"Event"=>array("INSERT","UPDATE","UPDATE OF","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
fun_adm_routine($E,$V){}function
fun_adm_routines(){}function
fun_adm_routine_languages(){}function
begin(){return
fun_adm_queries("BEGIN");}function
fun_adm_last_id(){global$g;return$g->result("SELECT LAST_INSERT_ROWID()");}function
fun_adm_explain($g,$I){return$g->query("EXPLAIN QUERY PLAN $I");}function
fun_adm_found_rows($S,$Z){}function
fun_adm_types(){return
array();}function
fun_adm_schemas(){return
array();}function
fun_adm_get_schema(){return"";}function
fun_adm_set_schema($Kg){return
true;}function
fun_adm_create_sql($R,$Ea){global$g;$K=$g->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = ".fun_adm_q($R));foreach(fun_adm_indexes($R)as$E=>$t){if($E=='')continue;$K.=";\n\n".index_sql($R,$t['type'],$E,"(".implode(", ",array_map('fun_adm_idf_escape',$t['columns'])).")");}return$K;}function
fun_adm_truncate_sql($R){return"DELETE FROM ".fun_adm_table($R);}function
fun_adm_use_sql($Fb){}function
fun_adm_trigger_sql($R,$nh){return
implode(fun_adm_get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ".fun_adm_q($R)));}function
fun_adm_show_variables(){global$g;$K=array();foreach(array("auto_vacuum","cache_size","count_changes","default_cache_size","empty_result_callbacks","encoding","foreign_keys","full_column_names","fullfsync","journal_mode","journal_size_limit","legacy_file_format","locking_mode","page_size","max_page_count","read_uncommitted","recursive_triggers","reverse_unordered_selects","secure_delete","short_column_names","synchronous","temp_store","temp_store_directory","schema_version","integrity_check","quick_check")as$y)$K[$y]=$g->result("PRAGMA $y");return$K;}function
fun_adm_process_list(){return
fun_adm_get_rows("SHOW FULL PROCESSLIST");}function
fun_adm_show_status(){$K=array();foreach(fun_adm_get_vals("PRAGMA compile_options")as$if){list($y,$X)=explode("=",$if,2);$K[$y]=$X;}return$K;}function
fun_adm_convert_field($m){}function
fun_adm_unconvert_field($m,$K){return$K;}function
fun_adm_support($Jc){return
preg_match('~^(columns|database|index|drop_col|dump|indexes|move_col|sql|status|table|trigger|variables|view|view_trigger)$~',$Jc);}};function
fun_adm_db_mysql($Yf){static$r=0;if($r!==0)return
true;$r++;if($Yf==='pdo'&&ADM_IS_PDOMYSQL){class
Cls_Adm_Min_DB
extends
Cls_Adm_Min_PDO{public$extension="PDO_MySQL";public
function
connect($Vg,$Ai,$Df){return$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$Vg)),$Ai,$Df);}public
function
set_charset($Va){$this->query("SET NAMES $Va");}public
function
select_db($Fb){return$this->query("USE ".fun_adm_idf_escape($Fb));}public
function
query($I,$ki=false){fun_adm_query($I);$this->setAttribute(1000,!$ki);return
parent::query($I,$ki);}}}else
if(extension_loaded('mysqli')){class
Cls_Adm_Min_DB
extends
mysqli{public$extension="MySQLi";public
function
Cls_Adm_Min_DB(){parent::init();}public
function
connect($Vg=null,$Ai=null,$Df=null,$Fb=null,$Jf=null,$dh=null){mysqli_report(MYSQLI_REPORT_OFF);$Dh=explode(':',$Vg,2);$md=isset($Dh[0])?$Dh[0]:'';$Jf=isset($Dh[1])?$Dh[1]:'3306';$K=@$this->real_connect(($Vg!==''?$md:ini_get('mysqli.default_host')),($Vg.$Ai!=''?$Ai:ini_get('mysqli.default_user')),($Vg.$Ai.$Df!=""?$Df:ini_get('mysqli.default_pw')),null,(is_numeric($Jf)?$Jf:ini_get("mysqli.default_port")),(!is_numeric($Jf)?$Jf:null));return$K;}function
set_charset($Va){if(parent::set_charset($Va))return
true;parent::set_charset('utf8');return$this->query("SET NAMES $Va");}public
function
result($I,$m=0){$J=$this->query($I);if(!$J)return
false;$L=$J->fetch_array();return$L[$m];}public
function
query($I,$tg=MYSQLI_STORE_RESULT){fun_adm_query($I);return
parent::query($I,$tg);}public
function
quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded('mysql')){class
Cls_Adm_Min_DB{public$extension="MySQL",$Wg,$ua,$rc,$l,$ia,$ka;public
function
connect($Vg,$Ai,$Df){$this->_link=@mysql_connect(($Vg!=""?$Vg:ini_get("mysql.default_host")),("$Vg$Ai"!=""?$Ai:ini_get("mysql.default_user")),("$Vg$Ai$Df"!=""?$Df:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function
set_charset($Va){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Va,$this->_link))return
true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Va");}public
function
quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}public
function
select_db($Fb){return
mysql_select_db($Fb,$this->_link);}public
function
query($I,$ki=false){fun_adm_query($I);$J=@($ki?mysql_unbuffered_query($I,$this->_link):mysql_query($I,$this->_link));$this->error="";if(!$J){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return
false;}if($J===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return
true;}return
new
Cls_Adm_Min_Result($J);}public
function
multi_query($I){return$this->_result=$this->query($I);}public
function
store_result(){return$this->_result;}public
function
next_result(){return
false;}public
function
result($I,$m=0){$J=$this->query($I);if(!$J||!$J->num_rows)return
false;return
mysql_result($J->_result,0,$m);}}class
Cls_Adm_Min_Result{public$num_rows,$ka,$ja=0;public
function
Cls_Adm_Min_Result($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}public
function
fetch_assoc(){return
mysql_fetch_assoc($this->_result);}public
function
fetch_row(){return
mysql_fetch_row($this->_result);}public
function
fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function
__destruct(){mysql_free_result($this->_result);}}};class
Cls_Adm_Min_Driver
extends
Cls_Adm_Min_SQL{public
function
insert($R,$O){return($O?parent::insert($R,$O):fun_adm_queries("INSERT INTO ".fun_adm_table($R)." ()\nVALUES ()"));}public
function
insertUpdate($R,$M,$Of){$f=array_keys(reset($M));$Mf="INSERT INTO ".fun_adm_table($R)." (".implode(", ",$f).") VALUES\n";$Ci=array();foreach($f
as$y)$Ci[$y]="$y = VALUES($y)";$ph="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ci);$Ci=array();$ce=0;foreach($M
as$O){$Y="(".implode(", ",$O).")";if($Ci&&(strlen($Mf)+$ce+strlen($Y)+strlen($ph)>1e6)){if(!fun_adm_queries($Mf.implode(",\n",$Ci).$ph))return
false;$Ci=array();$ce=0;}$Ci[]=$Y;$ce+=strlen($Y)+2;}return
fun_adm_queries($Mf.implode(",\n",$Ci).$ph);}}function
fun_adm_idf_escape($s){return"`".str_replace("`","``",$s)."`";}function
fun_adm_table($s){return
fun_adm_idf_escape($s);}function
fun_adm_connect(){global$c;$g=new
Cls_Adm_Min_DB();$_b=$c->credentials();if($g->connect($_b[0],$_b[1],$_b[2])){$g->set_charset(fun_adm_charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");return$g;}else{$Ug=explode(':',strtolower($_b[0]));$Kf=$Ug[1];$Ug=$Ug[0];if(in_array($Ug,array('127.0.0.1','localhost'))){$F=fun_adm_object();if($Ug!=='localhost')$F->conf_dbhost='localhost';else$F->conf_dbhost='127.0.0.1';if(is_numeric($Kf)&&$Kf>0)$F->conf_dbhost=$F->conf_dbhost.':'.$Kf;unset($g,$_b);$g=new
Cls_Adm_Min_DB();$_b=$c->credentials();if($g->connect($_b[0],$_b[1],$_b[2])){$g->set_charset(fun_adm_charset($g));$g->query("SET sql_quote_show_create = 1, autocommit = 1");return$g;}}}$K=$g->error?$g->error:fun_adm_get_session('linkmsg');if(function_exists('iconv')&&!fun_adm_is_utf8($K)&&strlen($Bg=iconv('windows-1250','utf-8',$K))>strlen($K))$K=$Bg;return$K;}function
fun_adm_get_databases($Sc){global$g;$I=($g->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($Sc?fun_adm_slow_query($I):fun_adm_get_vals($I));if(ADM_DB_LOCK){foreach($K
AS$x=>$X){if(!in_array($X,$_SERVER['DB_LIST']))unset($K[$x]);}}return$K;}function
fun_adm_limit($I,$Z,$z,$Ue=0,$Sg=" "){return" $I$Z".($z!==null?$Sg."LIMIT $z".($Ue?" OFFSET $Ue":""):"");}function
fun_adm_limit1($I,$Z){return
fun_adm_limit($I,$Z,1);}function
fun_adm_db_collation($k,$fb){global$g;$K=null;$i=$g->result("SHOW CREATE DATABASE ".fun_adm_idf_escape($k),1);if(preg_match('~ COLLATE ([^ ]+)~',$i,$B))$K=$B[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$i,$B))$K=$fb[$B[1]][-1];return$K;}function
fun_adm_engines(){$K=array();foreach(fun_adm_get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function
fun_adm_logged_user(){global$g;return
fun_adm_h($g->result("SELECT USER()"));}function
fun_adm_tables_list(){global$g;return
fun_adm_get_key_vals($g->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function
fun_adm_count_tables($j){$K=array();foreach($j
as$k)$K[$k]=count(fun_adm_get_vals("SHOW TABLES IN ".fun_adm_idf_escape($k)));return$K;}function
fun_adm_table_status($E="",$Gc=false){global$g;$K=array();foreach(fun_adm_get_rows($Gc&&$g->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($E!=""?"AND TABLE_NAME = ".fun_adm_q($E):"ORDER BY Name"):"SHOW TABLE STATUS".($E!=""?" LIKE ".fun_adm_q(addcslashes($E,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($E!="")return$L;$K[$L["Name"]]=$L;}return$K;}function
fun_adm_is_view($S){return$S["Engine"]===null;}function
fun_adm_fk_support($S){global$g;return
preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&version_compare($g->server_info,'5.6')>=0);}function
fun_adm_fields($R){$K=array();foreach(fun_adm_get_rows("SHOW FULL COLUMNS FROM ".fun_adm_table($R))as$L){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$L["Type"],$B);$K[$L["Field"]]=array("field"=>$L["Field"],"full_type"=>$L["Type"],"type"=>$B[1],"length"=>$B[2],"unsigned"=>ltrim($B[3].$B[4]),"default"=>($L["Default"]!=""||preg_match("~char|set~",$B[1])?$L["Default"]:null),"null"=>($L["Null"]=="YES"),"auto_increment"=>($L["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$L["Extra"],$B)?$B[1]:""),"collation"=>$L["Collation"],"privileges"=>array_flip(preg_split('~, *~',$L["Privileges"])),"comment"=>$L["Comment"],"primary"=>($L["Key"]=="PRI"),);}return$K;}function
fun_adm_indexes($R,$h=null){$K=array();foreach(fun_adm_get_rows("SHOW INDEX FROM ".fun_adm_table($R),$h)as$L){$K[$L["Key_name"]]["type"]=($L["Key_name"]=="PRIMARY"?"PRIMARY":($L["Index_type"]=="FULLTEXT"?"FULLTEXT":($L["Non_unique"]?"INDEX":"UNIQUE")));$K[$L["Key_name"]]["columns"][]=$L["Column_name"];$K[$L["Key_name"]]["lengths"][]=$L["Sub_part"];$K[$L["Key_name"]]["descs"][]=null;}return$K;}function
fun_adm_foreign_keys($R){global$g,$bf;static$Gf='`(?:[^`]|``)+`';$K=array();$yb=$g->result("SHOW CREATE TABLE ".fun_adm_table($R),1);if($yb){preg_match_all("~CONSTRAINT ($Gf) FOREIGN KEY ?\\(((?:$Gf,? ?)+)\\) REFERENCES ($Gf)(?:\\.($Gf))? \\(((?:$Gf,? ?)+)\\)(?: ON DELETE ($bf))?(?: ON UPDATE ($bf))?~",$yb,$C,PREG_SET_ORDER);foreach($C
as$B){preg_match_all("~$Gf~",$B[2],$eh);preg_match_all("~$Gf~",$B[5],$Ch);$K[fun_adm_idf_unescape($B[1])]=array("db"=>fun_adm_idf_unescape($B[4]!=""?$B[3]:$B[4]),"table"=>fun_adm_idf_unescape($B[4]!=""?$B[4]:$B[3]),"source"=>array_map('fun_adm_idf_unescape',$eh[0]),"target"=>array_map('fun_adm_idf_unescape',$Ch[0]),"on_delete"=>($B[6]?$B[6]:"RESTRICT"),"on_update"=>($B[7]?$B[7]:"RESTRICT"),);}}return$K;}function
fun_adm_view($E){global$g;return
array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$g->result("SHOW CREATE VIEW ".fun_adm_table($E),1)));}function
fun_adm_collations(){$K=array();foreach(fun_adm_get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K
as$y=>$X)asort($K[$y]);return$K;}function
fun_adm_information_schema($k){global$g;return($g->server_info>=5&&$k=="information_schema")||($g->server_info>=5.5&&$k=="performance_schema");}function
fun_adm_error(){global$g;return
fun_adm_h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$g->error));}function
fun_adm_create_database($k,$eb){return
fun_adm_queries("CREATE DATABASE ".fun_adm_idf_escape($k).($eb?" COLLATE ".fun_adm_q($eb):""));}function
fun_adm_drop_databases($j){$K=fun_adm_apply_queries("DROP DATABASE",$j,'fun_adm_idf_escape');return$K;}function
fun_adm_rename_database($E,$eb){$K=false;if(fun_adm_create_database($E,$eb)){$rg=array();foreach(fun_adm_tables_list()as$R=>$V)$rg[]=fun_adm_table($R)." TO ".fun_adm_idf_escape($E).".".fun_adm_table($R);$K=(!$rg||fun_adm_queries("RENAME TABLE ".implode(", ",$rg)));if($K)fun_adm_queries("DROP DATABASE ".fun_adm_idf_escape(ADM_DB));}return$K;}function
fun_adm_auto_increment(){$Fa=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(fun_adm_indexes($_GET["create"])as$t){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$t["columns"],true)){$Fa="";break;}if($t["type"]=="PRIMARY")$Fa=" UNIQUE";}}return" AUTO_INCREMENT$Fa";}function
fun_adm_alter_table($R,$E,$n,$Tc,$kb,$mc,$eb,$Ea,$Af){$d=array();foreach($n
as$m)$d[]=($m[1]?($R!=""?($m[0]!=""?"CHANGE ".fun_adm_idf_escape($m[0]):"ADD"):" ")." ".implode($m[1]).($R!=""?$m[2]:""):"DROP ".fun_adm_idf_escape($m[0]));$d=array_merge($d,$Tc);$P=($kb!==null?" COMMENT=".fun_adm_q($kb):"").($mc?" ENGINE=".fun_adm_q($mc):"").($eb?" COLLATE ".fun_adm_q($eb):"").($Ea!=""?" AUTO_INCREMENT=$Ea":"");if($R=="")return
fun_adm_queries("CREATE TABLE ".fun_adm_table($E)." (\n".implode(",\n",$d)."\n)$P$Af");if($R!=$E)$d[]="RENAME TO ".fun_adm_table($E);if($P)$d[]=ltrim($P);return($d||$Af?fun_adm_queries("ALTER TABLE ".fun_adm_table($R)."\n".implode(",\n",$d).$Af):true);}function
fun_adm_alter_indexes($R,$d){foreach($d
as$y=>$X)$d[$y]=($X[2]=="DROP"?"\nDROP INDEX ".fun_adm_idf_escape($X[1]):"\nADD $X[0] ".($X[0]=="PRIMARY"?"KEY ":"").($X[1]!=""?fun_adm_idf_escape($X[1])." ":"")."(".implode(", ",$X[2]).")");return
fun_adm_queries("ALTER TABLE ".fun_adm_table($R).implode(",",$d));}function
fun_adm_truncate_tables($T){return
fun_adm_apply_queries("TRUNCATE TABLE",$T);}function
fun_adm_drop_views($Hi){return
fun_adm_queries("DROP VIEW ".implode(", ",array_map('fun_adm_table',$Hi)));}function
fun_adm_drop_tables($T){return
fun_adm_queries("DROP TABLE ".implode(", ",array_map('fun_adm_table',$T)));}function
fun_adm_move_tables($T,$Hi,$Ch){$rg=array();foreach(array_merge($T,$Hi)as$R)$rg[]=fun_adm_table($R)." TO ".fun_adm_idf_escape($Ch).".".fun_adm_table($R);return
fun_adm_queries("RENAME TABLE ".implode(", ",$rg));}function
fun_adm_copy_tables($T,$Hi,$Ch){fun_adm_queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($T
as$R){$E=($Ch==ADM_DB?fun_adm_table("copy_$R"):fun_adm_idf_escape($Ch).".".fun_adm_table($R));if(!fun_adm_queries("\nDROP TABLE IF EXISTS $E")||!fun_adm_queries("CREATE TABLE $E LIKE ".fun_adm_table($R))||!fun_adm_queries("INSERT INTO $E SELECT * FROM ".fun_adm_table($R)))return
false;}foreach($Hi
as$R){$E=($Ch==ADM_DB?fun_adm_table("copy_$R"):fun_adm_idf_escape($Ch).".".fun_adm_table($R));$Gi=fun_adm_view($R);if(!fun_adm_queries("DROP VIEW IF EXISTS $E")||!fun_adm_queries("CREATE VIEW $E AS $Gi[select]"))return
false;}return
true;}function
fun_adm_trigger($E){if($E=="")return
array();$M=fun_adm_get_rows("SHOW TRIGGERS WHERE `Trigger` = ".fun_adm_q($E));return
reset($M);}function
fun_adm_triggers($R){$K=array();foreach(fun_adm_get_rows("SHOW TRIGGERS LIKE ".fun_adm_q(addcslashes($R,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function
fun_adm_trigger_options(){return
array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function
fun_adm_routine($E,$V){global$g,$oc,$yd,$ii;$wa=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$hi="((".implode("|",array_merge(array_keys($ii),$wa)).")\\b(?:\\s*\\(((?:[^'\")]|$oc)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$Gf="\\s*(".($V=="FUNCTION"?"":$yd).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$hi";$i=$g->result("SHOW CREATE $V ".fun_adm_idf_escape($E),2);preg_match("~\\(((?:$Gf\\s*,?)*)\\)\\s*".($V=="FUNCTION"?"RETURNS\\s+$hi\\s+":"")."(.*)~is",$i,$B);$n=array();preg_match_all("~$Gf\\s*,?~is",$B[1],$C,PREG_SET_ORDER);foreach($C
as$xf){$E=str_replace("``","`",$xf[2]).$xf[3];$n[]=array("field"=>$E,"type"=>strtolower($xf[5]),"length"=>preg_replace_callback("~$oc~s",'fun_adm_normalize_enum',$xf[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$xf[8] $xf[7]"))),"null"=>1,"full_type"=>$xf[4],"inout"=>strtoupper($xf[1]),"collation"=>strtolower($xf[9]),);}if($V!="FUNCTION")return
array("fields"=>$n,"definition"=>$B[11]);return
array("fields"=>$n,"returns"=>array("type"=>$B[12],"length"=>$B[13],"unsigned"=>$B[15],"collation"=>$B[16]),"definition"=>$B[17],"language"=>"SQL",);}function
fun_adm_routines(){return
fun_adm_get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".fun_adm_q(ADM_DB));}function
fun_adm_routine_languages(){return
array();}function
fun_adm_last_id(){global$g;return$g->result("SELECT LAST_INSERT_ID()");}function
fun_adm_explain($g,$I){return$g->query("EXPLAIN ".($g->server_info>=5.1?"PARTITIONS ":"").$I);}function
fun_adm_found_rows($S,$Z){return($Z||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function
fun_adm_types(){return
array();}function
fun_adm_schemas(){return
array();}function
fun_adm_get_schema(){return"";}function
fun_adm_set_schema($Jg){return
true;}function
fun_adm_create_sql($R,$Ea){global$g;$K=$g->result("SHOW CREATE TABLE ".fun_adm_table($R),1);if(!$Ea)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function
fun_adm_truncate_sql($R){return"TRUNCATE ".fun_adm_table($R);}function
fun_adm_use_sql($Fb){return"USE ".fun_adm_idf_escape($Fb);}function
fun_adm_trigger_sql($R,$nh){$K="";foreach(fun_adm_get_rows("SHOW TRIGGERS LIKE ".fun_adm_q(addcslashes($R,"%_\\")),null,"-- ")as$L)$K.="\n".($nh=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".fun_adm_idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".fun_adm_idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".fun_adm_table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function
fun_adm_show_variables(){return
fun_adm_get_key_vals("SHOW VARIABLES");}function
fun_adm_process_list(){return
fun_adm_get_rows("SHOW FULL PROCESSLIST");}function
fun_adm_show_status(){return
fun_adm_get_key_vals("SHOW STATUS");}function
fun_adm_convert_field($m){if(preg_match("~binary~",$m["type"]))return"HEX(".fun_adm_idf_escape($m["field"]).")";if($m["type"]=="bit")return"BIN(".fun_adm_idf_escape($m["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))return"AsWKT(".fun_adm_idf_escape($m["field"]).")";}function
fun_adm_unconvert_field($m,$K){if(preg_match("~binary~",$m["type"]))$K="UNHEX($K)";if($m["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$m["type"]))$K="GeomFromText($K)";return$K;}function
fun_adm_support($Jc){global$g;if($Jc==='index')return
true;return!preg_match("~scheme|sequence|type|view_trigger".($g->server_info<5.1?"|event|partitioning".($g->server_info<5?"|routine|trigger|view":''):'')."~",$Jc);}};class
Cls_Adm_Adminers{public$operators;public
function
isUser(){if(defined('ADM_LOGIN_ERR')){if(ADM_LOGIN_ERR)return
false;}if(isset($_SESSION[ADM_USER_SID])&&empty($_SESSION[ADM_USER_SID])===false){if(strpos('sqlite',fun_adm_constant('ADM_DRIVER'))!==false){if(fun_adm_get_session('driver'))return
true;};if(fun_adm_get_session('username'))return
true;}return
false;}public
function
name(){global$ha;$ti=ADM_URL;return"<a href=\"{$ti}\" id=\"h1\">Adminers</a>";}public
function
credentials(){$F=fun_adm_object();return
array(trim($F->conf_dbhost),trim($F->conf_dbuser),trim($F->conf_dbpass));}public
function
permanentLogin($i=false){return
password_file($i);}public
function
bruteForceKey(){return$_SERVER['REMOTE_ADDR'];}public
function
database(){return
ADM_DB;}public
function
databases($Sc=true){$Cb=fun_adm_get_databases($Sc);return$Cb;}public
function
schemas(){return
fun_adm_schemas();}public
function
queryTimeout(){return
5;}public
function
headers(){return
false;}public
function
head(){echo'';return
true;}public
function
login($je,$Df){if(strpos('sqlite',ADM_DRIVER)!==false){global$g;if($g->select_db('user.db')===false){fun_adm_create_database('user.db','');if($g->select_db('user.db')){$g->query('CREATE TABLE "user" ("uid" integer NOT NULL PRIMARY KEY AUTOINCREMENT,"username" text NOT NULL,"userpass" text NOT NULL)');$g->query('CREATE UNIQUE INDEX "user_username" ON "user" ("username")');$g->query("INSERT INTO `user` (`uid`, `username`, `userpass`) VALUES (1,'root','root')");}}$_i=$g->result("SELECT *, rowid FROM `user` WHERE `username` = 'root'",'userpass');if($_i!==$Df){$F=fun_adm_object();$g=$F->conf_note['sqlite_err'].fun_adm_get_path('user.db');return
false;}}return
true;}public
function
tableName($uh){return
fun_adm_h($uh["Name"]);}public
function
fieldName($m,$lf=0){return'<span title="'.fun_adm_h($m["full_type"]).'">'.fun_adm_h($m["field"]).'</span>';}public
function
selectLinks($uh,$O=''){echo'<p class="links">';$ge=array("select"=>fun_adm_lang(203));if(fun_adm_support("table")||fun_adm_support("indexes"))$ge["table"]=fun_adm_lang(201);if(fun_adm_support("table")){if(fun_adm_is_view($uh))$ge["view"]=fun_adm_lang(123);else$ge["create"]=fun_adm_lang(78);}$wd=$_GET;if($O!==null)$ge["edit"]=fun_adm_lang(204);if($wd['edit'])unset($wd['select']);foreach($ge
as$y=>$X)echo" <a href='".fun_adm_h(ADM_ME)."$y=".urlencode($uh["Name"]).($y=="edit"?$O:"")."'".fun_adm_bold(isset($wd[$y])).">$X</a>";echo"\n";}public
function
foreignKeys($R){return
fun_adm_foreign_keys($R);}public
function
backwardKeys($R,$th){return
array();}public
function
backwardKeysPrint($Ha,$L){}public
function
selectQuery($I,$Kh){global$w;return"<p id=\"querysqlinfo\"><code class='jush-$w'>".fun_adm_h(str_replace("\n"," ",$I))."</code> <span class='time'>($Kh)</span>".(fun_adm_support("sql")?" <a href='".fun_adm_h(ADM_ME)."sql=".urlencode($I)."'>".fun_adm_lang(48)."</a> / <a href=\"".ADM_THIS_URL."\">".fun_adm_lang(38)."</a>":"")."</p>";}public
function
rowDescription($R){return"";}public
function
rowDescriptions($M,$Uc){return$M;}public
function
selectLink($X,$m){}public
function
selectVal($X,$_,$m,$sf){$K=($X===null?"<i>NULL</i>":(preg_match("~char|binary~",$m["type"])&&!preg_match("~var~",$m["type"])?"<code>$X</code>":$X));if(preg_match('~blob|bytea|raw|file~',$m["type"])&&!fun_adm_is_utf8($X))$K=fun_adm_lang(238,strlen($sf));return($_?"<a href='".fun_adm_h($_)."'".(fun_adm_is_url($_)?" rel='noreferrer'":"").">$K</a>":$K);}public
function
editVal($X,$m){return$X;}public
function
selectColumnsPrint($N,$f){global$bd,$hd;fun_adm_print_fieldset("select",fun_adm_lang(235),$N);$r=0;$N[""]=array();foreach($N
as$y=>$X){$X=$_GET["columns"][$y];$e=fun_adm_sel_input(" name='columns[$r][col]' onchange='".($y!==""?"selectFieldChange(this.form)":"selectAddRow(this)").";'",$f,$X["col"]);echo"<div>".($bd||$hd?"<select name='columns[$r][fun]' onchange='helpClose();".($y!==""?"":" this.nextSibling.nextSibling.onchange();")."'".fun_adm_on_help("getTarget(event).value && getTarget(event).value.replace(/ |\$/, '(') + ')'",1).">".fun_adm_optionlist(array(-1=>"")+array_filter(array(fun_adm_lang(250)=>$bd,fun_adm_lang(251)=>$hd)),$X["fun"])."</select>"."($e)":$e)."</div>\n";$r++;}echo"</div></fieldset>\n";}public
function
selectSearchPrint($Z,$f,$u){fun_adm_print_fieldset("search",fun_adm_lang(177),$Z);foreach($u
as$r=>$t){if($t["type"]=="FULLTEXT"){echo"(<i>".implode("</i>, <i>",array_map('fun_adm_h',$t["columns"]))."</i>) AGAINST"," <input type='search' name='fulltext[$r]' value='".fun_adm_h($_GET["fulltext"][$r])."' onchange='selectFieldChange(this.form);'>",fun_adm_checkbox("boolean[$r]",1,isset($_GET["boolean"][$r]),"BOOL"),"<br>\n";}}$_GET["where"]=(array)$_GET["where"];reset($_GET["where"]);$Ua="this.nextSibling.onchange();";for($r=0;$r<=count($_GET["where"]);$r++){list(,$X)=each($_GET["where"]);if(!$X||("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators))){echo"<div>".fun_adm_sel_input(" name='where[$r][col]' onchange='$Ua'",$f,$X["col"],"(".fun_adm_lang(252).")"),fun_adm_html_select("where[$r][op]",$this->operators,$X["op"],$Ua),"<input type='search' name='where[$r][val]' value='".fun_adm_h($X["val"])."' onchange='".($X?"selectFieldChange(this.form)":"selectAddRow(this)").";' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";}}echo"</div></fieldset>\n";}public
function
selectOrderPrint($lf,$f,$u){fun_adm_print_fieldset("sort",fun_adm_lang(253),$lf);$r=0;foreach((array)$_GET["order"]as$y=>$X){if($X!=""){echo"<div>".fun_adm_sel_input(" name='order[$r]' onchange='selectFieldChange(this.form);'",$f,$X),fun_adm_checkbox("desc[$r]",1,isset($_GET["desc"][$y]),fun_adm_lang(95))."</div>\n";$r++;}}echo"<div>".fun_adm_sel_input(" name='order[$r]' onchange='selectAddRow(this);'",$f),fun_adm_checkbox("desc[$r]",1,false,fun_adm_lang(95))."</div>\n","</div></fieldset>\n";}public
function
selectLimitPrint($z){echo"<fieldset><legend>".fun_adm_lang(254)."</legend><div>";echo"<input type='number' name='limit' class='size' value='".fun_adm_h($z)."' onchange='selectFieldChange(this.form);'>","</div></fieldset>\n";}public
function
selectLengthPrint($Hh){if($Hh!==null){echo"<fieldset><legend>".fun_adm_lang(255)."</legend><div>","<input type='number' name='text_length' class='size' value='".fun_adm_h($Hh)."'>","</div></fieldset>\n";}}public
function
selectActionPrint($u){echo"<fieldset><legend>".fun_adm_lang(256)."</legend><div>","<input type='submit' value='".fun_adm_lang(235)."'>"," <span id='noindex' title='".fun_adm_lang(257)."'></span>","<script type='text/javascript'>\n","var indexColumns = ";$f=array();foreach($u
as$t){if($t["type"]!="FULLTEXT")$f[reset($t["columns"])]=1;}$f[""]=1;foreach($f
as$y=>$X)fun_adm_json_row($y);echo";\n","selectFieldChange(document.getElementById('form'));\n","</script>\n","</div></fieldset>\n";}public
function
selectCommandPrint(){return!fun_adm_information_schema(ADM_DB);}public
function
selectImportPrint(){return!fun_adm_information_schema(ADM_DB);}public
function
selectEmailPrint($jc,$f){}public
function
selectColumnsProcess($f,$u){global$bd,$hd;$N=array();$fd=array();foreach((array)$_GET["columns"]as$y=>$X){if($X["fun"]=="count"||($X["col"]!=""&&(!$X["fun"]||in_array($X["fun"],$bd)||in_array($X["fun"],$hd)))){$N[$y]=fun_adm_apply_sql_function($X["fun"],($X["col"]!=""?fun_adm_idf_escape($X["col"]):"*"));if(!in_array($X["fun"],$hd))$fd[]=$N[$y];}}return
array($N,$fd);}public
function
selectSearchProcess($n,$u){global$g,$w;$K=array();foreach($u
as$r=>$t){if($t["type"]=="FULLTEXT"&&$_GET["fulltext"][$r]!="")$K[]="MATCH (".implode(", ",array_map('fun_adm_idf_escape',$t["columns"])).") AGAINST (".fun_adm_q($_GET["fulltext"][$r]).(isset($_GET["boolean"][$r])?" IN BOOLEAN MODE":"").")";}foreach((array)$_GET["where"]as$X){if("$X[col]$X[val]"!=""&&in_array($X["op"],$this->operators)){$ob=" $X[op]";if(preg_match('~IN$~',$X["op"])){$sd=fun_adm_process_length($X["val"]);$ob.=" ".($sd!=""?$sd:"(NULL)");}elseif($X["op"]=="SQL")$ob=" $X[val]";elseif($X["op"]=="LIKE %%")$ob=" LIKE ".$this->processInput($n[$X["col"]],"%$X[val]%");elseif($X["op"]=="ILIKE %%")$ob=" ILIKE ".$this->processInput($n[$X["col"]],"%$X[val]%");elseif(!preg_match('~NULL$~',$X["op"]))$ob.=" ".$this->processInput($n[$X["col"]],$X["val"]);if($X["col"]!="")$K[]=fun_adm_idf_escape($X["col"]).$ob;else{$hb=array();foreach($n
as$E=>$m){$Gd=preg_match('~char|text|enum|set~',$m["type"]);if((is_numeric($X["val"])||!preg_match('~(^|[^o])int|float|double|decimal|bit~',$m["type"]))&&(!preg_match("~[\x80-\xFF]~",$X["val"])||$Gd)){$E=fun_adm_idf_escape($E);$hb[]=($w=="sql"&&$Gd&&!preg_match("~^utf8_~",$m["collation"])?"CONVERT($E USING ".fun_adm_charset($g).")":$E);}}$K[]=($hb?"(".implode("$ob OR ",$hb)."$ob)":"0");}}}return$K;}public
function
selectOrderProcess($n,$u){$K=array();foreach((array)$_GET["order"]as$y=>$X){if($X!="")$K[]=(preg_match('~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~',$X)?$X:fun_adm_idf_escape($X)).(isset($_GET["desc"][$y])?" DESC":"");}return$K;}public
function
selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}public
function
selectLengthProcess(){return(isset($_GET["text_length"])?$_GET["text_length"]:"100");}public
function
selectEmailProcess($Z,$Uc){return
false;}public
function
selectQueryBuild($N,$Z,$fd,$lf,$z,$G){return'';}public
function
messageQuery($I,$Kh){global$w;$ld=fun_adm_get_session('queries','array');$k=$_GET["db"];$pd="sql-".count($ld[$k]);if(strlen($I)>1e6)$I=preg_replace('~[\x80-\xFF]+$~','',substr($I,0,1e6))."\n...";$ld[$k][]=array($I,time(),$Kh);fun_adm_set_session('queries',$ld);return" <span class='time'>".@date("H:i:s")."</span> <a href='#$pd' onclick=\"return !toggle('$pd');\">".fun_adm_lang(51)."</a>"."<div id='$pd' class='hidden'><pre><code class='jush-$w'>".fun_adm_shorten_utf8($I,1000).'</code></pre>'.($Kh?" <span class='time'>($Kh)</span>":'').(fun_adm_support("sql")?'<p><a href="'.fun_adm_h(str_replace("db=".urlencode(ADM_DB),"db=".urlencode($k),ADM_ME).'sql=&history='.(count($ld[$k])-1)).'">'.fun_adm_lang(48).'</a>':'').'</div>';}public
function
editFunctions($m){global$fc;$K=($m["null"]?"NULL/":"");foreach($fc
as$y=>$bd){if(!$y||(!isset($_GET["call"])&&(isset($_GET["select"])||fun_adm_where($_GET)))){foreach($bd
as$Gf=>$X){if(!$Gf||preg_match("~$Gf~",$m["type"]))$K.="/$X";}if($y&&!preg_match('~set|blob|bytea|raw|file~',$m["type"]))$K.="/SQL";}}if($m["auto_increment"]&&!isset($_GET["select"])&&!fun_adm_where($_GET))$K=fun_adm_lang(14);return
explode("/",$K);}public
function
editInput($R,$m,$Da,$Y){if($m["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$Da value='-1' checked><i>".fun_adm_lang(226)."</i></label> ":"").($m["null"]?"<label><input type='radio'$Da value=''".($Y!==null||isset($_GET["select"])?"":" checked")."><i>NULL</i></label> ":"").fun_adm_enum_input("radio",$Da,$m,$Y,0);return"";}public
function
processInput($m,$Y,$q=""){if($q=="SQL")return$Y;$E=$m["field"];$K=fun_adm_q($Y);if(preg_match('~^(now|getdate|uuid)$~',$q))$K="$q()";elseif(preg_match('~^current_(date|timestamp)$~',$q))$K=$q;elseif(preg_match('~^([+-]|\\|\\|)$~',$q))$K=fun_adm_idf_escape($E)." $q $K";elseif(preg_match('~^[+-] interval$~',$q))$K=fun_adm_idf_escape($E)." $q ".(preg_match("~^(\\d+|'[0-9.: -]') [A-Z_]+$~i",$Y)?$Y:$K);elseif(preg_match('~^(addtime|subtime|concat)$~',$q))$K="$q(".fun_adm_idf_escape($E).", $K)";elseif(preg_match('~^(md5|sha1|password|encrypt)$~',$q))$K="$q($K)";return
fun_adm_unconvert_field($m,$K);}public
function
dumpOutput(){$K=array('text'=>fun_adm_lang(195),'file'=>fun_adm_lang(258));if(function_exists('gzencode'))$K['gz']='gzip';return$K;}public
function
dumpFormat(){return
array('sql'=>'SQL','csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}public
function
dumpDatabase($k){}public
function
dumpTable($R,$nh,$Id=0){if($_POST['format']!='sql'){echo"\xef\xbb\xbf";if($nh)fun_adm_dump_csv(array_keys(fun_adm_fields($R)));}else{if($Id==2){$n=array();foreach(fun_adm_fields($R)as$E=>$m)$n[]=fun_adm_idf_escape($E)." $m[full_type]";$i="CREATE TABLE ".fun_adm_table($R)." (".implode(", ",$n).")";}else$i=fun_adm_create_sql($R,$_POST['auto_increment']);if($i){if($nh=="DROP+CREATE"||$Id==1)echo"DROP ".($Id==2?"VIEW":"TABLE")." IF EXISTS ".fun_adm_table($R).";\n";if($Id==1)$i=fun_adm_remove_definer($i);echo"$i;\n\n";}}}public
function
dumpData($R,$nh,$I){global$g,$w;$qe=($w=="sqlite"?0:1048576);if($nh){if($_POST["format"]=="sql"){if($nh=="TRUNCATE+INSERT")echo
fun_adm_truncate_sql($R).";\n";$n=fun_adm_fields($R);}$J=$g->query($I,1);if($J){$_d="";$Ra="";$Pd=array();$ph="";$Kc=($R!=''?'fetch_assoc':'fetch_row');while($L=$J->$Kc()){if(!$Pd){$Ci=array();foreach($L
as$X){$m=$J->fetch_field();$Pd[]=$m->name;$y=fun_adm_idf_escape($m->name);$Ci[]="$y = VALUES($y)";}$ph=($nh=="INSERT+UPDATE"?"\nON DUPLICATE KEY UPDATE ".implode(", ",$Ci):"").";\n";}if($_POST["format"]!="sql"){if($nh=="table"){fun_adm_dump_csv($Pd);$nh="INSERT";}fun_adm_dump_csv($L);}else{if(!$_d)$_d="INSERT INTO ".fun_adm_table($R)." (".implode(',',array_map('fun_adm_idf_escape',$Pd)).") VALUES";foreach($L
as$y=>$X){$m=$n[$y];$L[$y]=($X!==null?fun_adm_unconvert_field($m,preg_match('~(^|[^o])int|float|double|decimal~',$m['type'])&&$X!=''?$X:fun_adm_q($X)):"NULL");}$Bg=($qe?"\n":'').'('.implode(',',$L).')';if(!$Ra)$Ra=$_d.$Bg;elseif(strlen($Ra)+4+strlen($Bg)+strlen($ph)<$qe)$Ra.=",$Bg";else{echo$Ra.$ph;$Ra=$_d.$Bg;}}}if($Ra)echo$Ra.$ph;}elseif($_POST["format"]=='sql')echo'-- '.str_replace("\n",'',$g->error)."\n";}}public
function
dumpFilename($qd){$F=fun_adm_object();return
fun_adm_friendly_url($qd!=""?$qd:($F->conf_dbhost!=''?$F->conf_dbhost:'localhost'));}public
function
dumpHeaders($qd,$De=false){$vf=$_POST["output"];if($vf!=='text'){$Bc=(preg_match('~sql~',$_POST["format"])?"sql":($De?"tar":"csv"));header('Cache-Control: public');header('Content-Transfer-Encoding: binary');header('Accept-Ranges: bytes');header("Content-Type: ".($vf=="gz"?"application/x-gzip":($Bc=="tar"?"application/x-tar":($Bc=="sql"||$vf!="file"?"text/plain":"text/csv")."; charset=utf-8")));if($vf=="gz")ob_start('fun_adm_ob_gzencode',1e6);}else{header("Content-Type:text/plain; charset=utf-8");$Bc='sql';}return$Bc;}public
function
homepage(){echo'<p class="links">'.'<a href="'.fun_adm_h(ADM_ME).'">'.ADM_DB.'</a> '.(fun_adm_support("database")?'<a href="'.fun_adm_h(ADM_ME).'database=">'.fun_adm_lang(101)."</a>\n":""),(fun_adm_support("scheme")?"<a href='".fun_adm_h(ADM_ME)."scheme='>".(!isset($_GET['ns'])?fun_adm_lang(106):fun_adm_lang(107))."</a>\n":""),(!isset($_GET['ns'])?'<a href="'.fun_adm_h(ADM_ME).'schema=">'.fun_adm_lang(27)."</a>\n":""),(fun_adm_support("privileges")?"<a href='".fun_adm_h(ADM_ME)."privileges='>".fun_adm_lang(40)."</a>\n":""),"<a href='".fun_adm_h(ADM_ME)."create='>".fun_adm_lang(79)."</a>\n";return
true;}public
function
navigation($Be){global$ha,$w,$g;echo'<h1>
    ',$this->name(),' <span class="version">',$ha,'</span>
</h1>
';if($Be==='auth')return
true;$T='';if(!$Be&&ADM_DB){$g->select_db(ADM_DB);$T=fun_adm_table_status('',false);}if(fun_adm_support('sql')){echo'<script type="text/javascript" src="',fun_adm_incl('jush.js'),'"></script>
<script type="text/javascript">
';if($T){$ge=array();foreach($T
as$R=>$V)$ge[]=preg_quote($R,'/');echo"var jushLinks = { $w: [ '".fun_adm_js_escape(ADM_ME).(fun_adm_support("table")?"table=":"select=")."\$&', /\\b(".implode("|",$ge).")\\b/g ] };\n";foreach(array("bac","bra","sqlite_quo","mssql_bra")as$X)echo"jushLinks.$X = jushLinks.$w;\n";}echo'bodyLoad(\'',(is_object($g)?substr($g->server_info,0,3):""),'\');
</script>
';}$Oe=isset($_GET['select'])?$_GET['select']:'';$Pe=isset($_GET['table'])?$_GET['table']:'';echo"<p class='links'>".(fun_adm_support("sql")?"<a href='".str_replace('&sql=','',ADM_ME)."sql='".fun_adm_bold(isset($_GET["sql"])&&!isset($_GET["import"])).">".fun_adm_lang(259)."</a>\n<a href='".fun_adm_h(ADM_ME)."import='".fun_adm_bold(isset($_GET["import"])).">".fun_adm_lang(50)."</a>\n":"")."";if(fun_adm_support("dump"))echo"<a href='".fun_adm_h(ADM_ME)."dump=".urlencode($Pe?$Pe:$Oe)."' id='dump'".fun_adm_bold(isset($_GET["dump"])).">".fun_adm_lang(30)."</a>\n";$this->databasesPrint($Be,$j);if(!$Be&&ADM_DB){if(!$T)echo"<p class='message'>".fun_adm_lang(71)."\n";else$this->tablesPrint($T);}if(!$T&&ADM_DB==''){echo'<p id="databases">';foreach($j
AS$y=>$X)echo'<a href="'.fun_adm_h(ADM_ME).'db='.fun_adm_h($X).'">'.fun_adm_h($X).'</a>'."\n";echo'</p>';}}public
function
databasesPrint($Be,&$j){global$c,$g,$U;$j=$this->databases();echo'<form enctype="application/x-www-form-urlencoded" method="post" action="">
<p id="dbs">
';$Gb=" onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'";echo($j?"<select name='db'$Gb>".fun_adm_optionlist(array(''=>fun_adm_lang(260))+$j,ADM_DB)."</select>":'<input name="db" value="'.fun_adm_h(ADM_DB).'" autocapitalize="off">'),"<input type='submit' value='".fun_adm_lang(218)."'".($j?" class='hidden'":"").">\n";if($Be!="db"&&ADM_DB!=""&&$g->select_db(ADM_DB)){if(fun_adm_support("scheme")){echo"<br>".fun_adm_lang(261).": <select name='ns'$Gb>".fun_adm_optionlist(array(""=>"")+$c->schemas(),$_GET['ns'])."</select>";if($_GET['ns'])fun_adm_set_schema($_GET['ns']);}}echo(isset($_GET["sql"])?'<input type="hidden" name="sql" value="">':(isset($_GET["schema"])?'<input type="hidden" name="schema" value="">':(isset($_GET["dump"])?'<input type="hidden" name="dump" value="">':(isset($_GET["privileges"])?'<input type="hidden" name="privileges" value="">':"")))),"<input type='hidden' value='".$U."' name=\"token\">\n","</p></form>\n";}public
function
tablesPrint($T){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($T
as$R=>$P){$E=$this->tableName($P);$Ng=fun_adm_get_session('sel_table');$Yd='none';if(urldecode($Ng)===$R)$Yd='focus';$Oh="Rows: {$P['Rows']}\nEngine: {$P['Engine']}\nUpdate_time: {$P['Update_time']}\nCollation: {$P['Collation']}";$pe=$P['Rows'];if($P['Rows']>999)$pe='99+';if(is_numeric($P['Rows'])&&$_GET['select']!==$E)$P['Rows']="[{$pe}]";else$P['Rows']='';echo(fun_adm_support("table")||fun_adm_support("indexes")?'<a class="sel_'.$Yd.'" href="'.fun_adm_h(ADM_ME).'select='.urlencode($R).'"'.fun_adm_bold(in_array($R,array($_GET["table"],$_GET["create"],$_GET["indexes"],$_GET["foreign"],$_GET["trigger"])),(fun_adm_is_view($P)?"view":""),"structure")." title='".$Oh."'>$E{$P['Rows']}</a>":"<span>$E ({$pe})</span>")."<br>\n";}}}class
Cls_Adm_TmpFile{public$handler;public$size;public
function
Cls_Adm_TmpFile(){clearstatcache();$this->handler=tmpfile();}public
function
write($rb){$this->size+=strlen($rb);fwrite($this->handler,$rb);}public
function
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}if(ADM_IS_LOCAL&&!ADM_ISAPI){$oa=new
Adminers();$oa->run();}function
fun_adm_object($Ih=''){static$F=null;if($Ih==='clear'){$F=null;return$F;}if($F!==null)return$F;$F=$Ih;}function
fun_adm_error_handler($rc=0,$tc=0,$pc=0,$qc=0){static$o='';static$l=array();if($rc&&$pc){$ec=array();$ec['type']=$rc;$ec['message']=$tc;$ec['file']=$pc;$ec['line']=$qc;$Xd=false;}else{$ec=error_get_last();$Xd=true;}if($ec['type']!==8&&$ec['message']&&(stripos(trim($ec['message']),'Undefined')!==0))$l[]=$ec;if($Xd)fun_adm_showmsg($l);return
true;}function
fun_adm_showmsg($l){$F=fun_adm_object();if($F->conf_callback_func&&function_exists($F->conf_callback_func)){$F->data_error=$l;$F->data_session=$_SESSION;$Nb=get_defined_constants(true);$F->data_constant=$Nb['user'];$Nb=get_defined_functions();foreach($Nb['user']AS$x=>$X){if(stripos($X,'fun_adm_')!==0)unset($Nb['user'][$x]);}$F->data_func=array_values($Nb['user']);$F->data_get=$_GET;$F->data_post=$_POST;call_user_func_array($F->conf_callback_func,array('adminers'=>(array)$F));}session_write_close();restore_error_handler();$Ld=fun_adm_constant('ADM_IS_ONCE');if(!$l){if(defined('ADM_RUN'))header('X_adminfo:'.sprintf('%d|%d|%d|%d|%d',fun_adm_constant('ADM_ISAPI'),$Ld,fun_adm_constant('ADM_IS_LOCAL'),fun_adm_constant('ADM_DEBUG'),fun_adm_constant('ADM_API_LOGOUT')));return
true;}$bb=0;if(function_exists('http_response_code'))$bb=http_response_code();$Vf=(isset($_SERVER['SERVER_PROTOCOL'])?$_SERVER['SERVER_PROTOCOL']:'HTTP/1.0');if($bb>=400||!$Ld||fun_adm_constant('ADM_DEBUG')){ob_end_clean();header($Vf.' 200 OK');header('Content-Type: text/html; charset=utf-8');header('Cache-Control: no-cache');header('X-Powered-By: Adminers '.fun_adm_constant('ADM_VERSION'));echo'<!DOCTYPE HTML><html><head><title>Exception Information</title></head><body>','<div id="msg_debug">','<h3>['.$bb.']ErrorInfo N['.count($l).'] '.date('Y-m-d H:i:s').'</h3>';foreach($l
AS$y=>$X){echo'<p>Type: '.fun_adm_FriendlyErrorType($X['type'])."<br />\n",'Mess: '.htmlspecialchars($X['message'])."<br />\n",'FileLine: '.htmlspecialchars($X['file']).'('.$X['line'].')'."</p>\n";}echo'<a href="'.fun_adm_constant('ADM_THIS_URL').'">Refresh</a></div></body></html>';}else{$Db='';foreach($l
as$y=>$X){$X['message'].=nl2br($X['message']);$Db.=date('H:i:s').'['.htmlspecialchars($X['file']).'('.$X['line'].') :'.htmlspecialchars($X['message']).']';};if(!$Db)$Db=$Vf.' '.$bb;header('X_adminfo:'.$Db);}}function
fun_adm_FriendlyErrorType($V){$ud=array();$ud[E_ERROR]='E_ERROR[1]';$ud[E_WARNING]='E_WARNING[2]';$ud[E_PARSE]='E_PARSE[4]';$ud[E_NOTICE]='E_NOTICE[8]';$ud[E_CORE_ERROR]='E_CORE_ERROR[16]';$ud[E_CORE_WARNING]='E_CORE_WARNING[32]';$ud[E_CORE_ERROR]='E_COMPILE_ERROR[64]';$ud[E_CORE_WARNING]='E_COMPILE_WARNING[128]';$ud[E_USER_ERROR]='E_USER_ERROR[256]';$ud[E_USER_WARNING]='E_USER_WARNING[512]';$ud[E_USER_NOTICE]='E_USER_NOTICE[1024]';$ud[E_STRICT]='E_STRICT[2048]';$ud[E_RECOVERABLE_ERROR]='E_RECOVERABLE_ERROR[4096]';$ud[E_DEPRECATED]='E_DEPRECATED[8192]';$ud[E_USER_DEPRECATED]='E_USER_DEPRECATED[16384]';if($ud[$V])return$ud[$V];else
return$V;}
